package JrdApi;/**
 * <p>Title: <JrdApi for Java>
 * <p>Description: <JrdApi is call by Java on windows perform >
 * <p>Copyright: Copyright (c) 2003< MingHua AoHan Co.>
 * <p>Company: </p>
 * MeiHaiHua and HuWeiJun
 * @version 1.0
 */public class JrdApi {
  static{
      System.loadLibrary("mwrdjni");
  }
  public JrdApi() {
  }
  public native int auto_init(short port,int baud);
  public native short auto_pull(int icdev);
  public native int chk_baud(short port);
  public native short chk_card(int icdev);
  public native short cmp_dvsc(int icdev,short len,byte[] dta_buffer);
  public native short dv_beep(int icdev,short time);
  public native short get_status(int icdev);
  public native short get_status_data(); 
public static void main(String[] args) {
  
JrdApi JrdApi1 = new JrdApi();
int baud=9600;
int icdev;
short port=0,shortRet;
short len = 3;

int TestType=42;
/*
TestType

0 //设备测试;
1 //加密解密
42 //4442卡测试
48 //4428卡测试
16 //24C16卡测试
Test
*/
icdev = JrdApi1.auto_init(port,baud);
if(icdev<0)
System.out.println("auto_init error "+icdev);
else
System.out.println("auto_init icdev OK");
switch(TestType)
{
case 0:
{
/*baud = JrdApi1.chk_baud(port);
if(baud<0)
System.out.println("chk_baud error "+baud);
else
System.out.println("chk_baud ok "+baud);
*/


shortRet = JrdApi1.dv_beep(icdev,(short)40);

if(shortRet!=0)
{
System.out.println("dv_beep error "+shortRet);
}
else
{
System.out.println("dv_beep ok " +shortRet);
}

shortRet = JrdApi1.get_status(icdev);
if(shortRet!=0)
System.out.println("get_status error "+shortRet);
else
System.out.println("get_status ok "+shortRet);

shortRet = JrdApi1.get_status_data();
if(shortRet==1)
System.out.println("get_status_data ok 读写器插有卡 "+shortRet);
else if(shortRet==0)
System.out.println("get_status_data ok 读写器未插卡 "+shortRet);
byte[] lib_ver_byte = new byte[18];

shortRet = JrdApi1.lib_ver(lib_ver_byte);
if(shortRet!=0)
{
System.out.println("lib_ver error "+shortRet);
}else{
System.out.println("lib_ver ok: " + new String(lib_ver_byte));
}

len = 18;
byte[] ba_ver = new byte[len];
shortRet = JrdApi1.srd_ver(icdev,len,ba_ver);
if(shortRet!=0)
{
System.out.println("srd_ver error "+shortRet);
}else
{
System.out.println("srd_ver ok "+new String(ba_ver));
}
break;
}
case 1:
{
int i;
byte[] key = {'1','2','3','4','5','6','7','8',0};
byte[] ptrSource = {'a','b','c','d','e','f','g','h',0};
byte[] ptrDest = new byte[9];
short msgLen=8;
short keyLen=8;
System.out.println("encrypt and descrypt start:"+new String(ptrSource));
//    //shortRet = JrdApi1.ic_test();
shortRet = JrdApi1.ic_encrypt(key,ptrSource,msgLen,ptrDest);
if(shortRet!=0)
{
System.out.println("ic_encrypt error "+shortRet);
}
else {
System.out.println("ic_encrypt ok "+new String(ptrDest));
}

for(i=0;i<8;i++)     ptrSource[i]=0;
shortRet = JrdApi1.ic_descrypt(key,ptrDest,msgLen,ptrSource);
if(shortRet!=0)
{
System.out.println("ic_descrypt "+shortRet);
}else{
System.out.println("ic_descrypt ok "+new String(ptrSource));
}
break;
}
case 48:
{
shortRet=JrdApi1.chk_4428(icdev);
if(shortRet!=0)
{
System.out.println("chk_4428 error "+shortRet);
}else
{
System.out.println("chk_4428 ok");
}

byte[] dta_buffer=new byte[2];
for(int i=0;i<2;i++)
{
dta_buffer[i] =(byte)0xff;
}
short len28=2;
shortRet=JrdApi1.csc_4428(icdev, len28, dta_buffer);
if(shortRet!=0)
{
System.out.println("csc_4428 error "+shortRet);
}else
{
System.out.println("csc_4428 ok");
}

shortRet=JrdApi1.rsc_4428( icdev, len28,dta_buffer);
if(shortRet!=0)
{
System.out.println("rsc_4428 error "+shortRet);
}else
{
       System.out.println("rsc_4428 ok");
}
shortRet = JrdApi1.rsct_4428(icdev);
if(shortRet!=0)
System.out.println("rsct_4428error "+shortRet);
else
System.out.println("rsct_4428 ok "+shortRet);
shortRet = JrdApi1.rsct_4428_data();
if(shortRet==1)
System.out.println("get_status_data ok 大于8 "+shortRet);
else if(shortRet==0)
   System.out.println("get_status_data ok 小于8"+shortRet);

byte[] dta_buffer1=new byte[8];
for(int i=0;i<8;i++)
{
dta_buffer1[i] =(byte)0xff;
}

short offset28=0;
len28=8;
JrdApi1.srd_4428(icdev,offset28,len28,dta_buffer1);
if(shortRet!=0)
{
System.out.println("srd_4428 error "+shortRet);
}else
{
System.out.println("srd_4428 ok");
}

for(int i=0;i<8;i++)
{
dta_buffer1[i] =(byte)0xff;
}
JrdApi1.swr_4428(icdev, offset28, len28,dta_buffer);
if(shortRet!=0)
{
System.out.println("swr_4428 error "+shortRet);
}else
{
System.out.println("swr_4428 ok");
}
break;
}
case 16:
{
//24c16 card operation
byte[] data_buf_24c16 = new byte[2*1024];
len =128;
short offset = 0;
shortRet = JrdApi1.chk_24c16(icdev);
if(shortRet!=0)
{
System.out.println("chk_24c16 error");
}
else
{
System.out.println("chk_24c16 ok");
}

shortRet = JrdApi1.srd_24c16(icdev, offset, len,data_buf_24c16);
if(shortRet!=0)
{
System.out.println("srd_24c16 error");
}
else
{
System.out.println("srd_24c16 ok");
}

shortRet = JrdApi1.swr_24c16(icdev, offset, len,data_buf_24c16);
if(shortRet!=0)
{
System.out.println("swr_24c16 error");
}
else
{
System.out.println("swr_24c16 ok");
}
break;
}
case 42:
{
shortRet=JrdApi1.chk_4442(icdev);
if(shortRet!=0)
{
System.out.println("chk_4442 error "+shortRet);
}else
{
System.out.println("chk_4442 ok");
}

byte[] pwd_4442=new byte[3];
for(int i=0;i<3;i++)
{
pwd_4442[i] =(byte)0xff;
}
short len42=3;
shortRet=JrdApi1.csc_4442(icdev, len42, pwd_4442);
if(shortRet!=0)
{
System.out.println("csc_4442 error "+shortRet);
}else
{
System.out.println("csc_4442 ok");
}

shortRet=JrdApi1.rsc_4442( icdev, len42,pwd_4442);
if(shortRet!=0)
{
System.out.println("rsc_4442 error "+shortRet);
}else
{
       System.out.println("rsc_4442 ok");
}
shortRet = JrdApi1.rsct_4442(icdev);
if(shortRet!=0)
System.out.println("rsct_4442 error "+shortRet);
else
System.out.println("rsct_4442 ok "+shortRet);
shortRet = JrdApi1.rsct_4442_data();
if(shortRet>0)
System.out.println("rsct_4442_data ok  "+shortRet);
else if(shortRet==0)
   System.out.println("rsct_4442_data: "+shortRet);

byte[] dta_buffer1=new byte[8];
for(int i=0;i<8;i++)
{
dta_buffer1[i] =(byte)0xff;
}

short offset42=32;
len42=8;
shortRet=JrdApi1.srd_4442(icdev,offset42,len42,dta_buffer1);
if(shortRet!=0)
{
System.out.println("srd_4442 error "+shortRet);
}else
{
System.out.println("srd_4442 ok "+dta_buffer1);
}

for(int i=0;i<8;i++)
{
dta_buffer1[i] =(byte)(0x30+i);
}
shortRet=JrdApi1.swr_4442(icdev, offset42, len42,dta_buffer1);
if(shortRet!=0)
{
System.out.println("swr_4442 error "+shortRet);
}else
{
System.out.println("swr_4442 ok");
}
break;
}
}

shortRet = JrdApi1.ic_exit(icdev);
if(icdev<0)
{
System.out.println("ic_exit error "+icdev);
}else{
System.out.println("ic_exit icdev "+icdev);
}



}}