RFID阅读器通信

时间:2014-03-15 15:21:22

标签: dll tags communication rfid

我有RFID阅读器ZK-RFID101,当我买它时,它带有一个SDK来开发和与读者沟通但是当我试图使用它它不会工作,我没有从阅读器收到任何信息< / p>

public class Reader18 {

    /**
     * @param arr
     * @return 
     */
    public native int[] OpenComPort(int[]arr);
    public native int[] AutoOpenComPort(int[]arr);
    public native int CloseComPort();
    public native int[] OpenNetPort(int addr,int Port,String IPaddr);
    public native int CloseNetPort(int Port);
    public native int CloseSpecComPort(int Frmhandle);
    public native int[] GetReaderInformation(int[]arr);
    public native int SetWGParameter(int[]arr);
    public native int[] ReadActiveModeData(int[]arr);
    public native int SetWorkMode(int[]arr);
    public native int[] GetWorkModeParameter(int[]arr);
    public native int BuzzerAndLEDControl(int[] arr);
    public native int WriteComAdr(int[] arr);
    public native int SetPowerDbm(int[] arr);
    public native int Writedfre(int[] arr);
    public native int Writebaud(int[] arr);
    public native int WriteScanTime(int[] arr);
    public native int SetAccuracy(int[] arr);
    //EPC  G2
    public native int[] Inventory_G2(int[]arr);
    public native int[] ReadCard_G2(int[]arr);
    public native int[] WriteCard_G2(int[]arr);
    public native int[] EraseCard_G2(int[]arr);
    public native int[] SetCardProtect_G2(int[]arr);
    public native int[] DestroyCard_G2(int[]arr);
    public native int[] WriteEPC_G2(int[]arr);
    public native int[] SetReadProtect_G2(int[]arr);
    public native int[] SetMultiReadProtect_G2(int[]arr);
    public native int[] RemoveReadProtect_G2(int[]arr);
    public native int[] CheckReadProtected_G2(int[]arr);
    public native int[] SetEASAlarm_G2(int[]arr);
    public native int[] CheckEASAlarm_G2(int[]arr);
    public native int[] LockUserBlock_G2(int[]arr);
    //18000_6B
    public native int[] Inventory_6B(int[]arr);
    public native int[] inventory2_6B(int[]arr);
    public native int[] ReadCard_6B(int[]arr);
    public native int[] WriteCard_6B(int[]arr);
    public native int[] LockByte_6B(int[]arr);
    public native int[] CheckLock_6B(int[]arr);

    public static void main(String[] args) {
        Reader18 test = new Reader18();
        int[] a = new int[2];
        int[] b;



        a[0]=0xff;
        a[1]=0;




      b=test.AutoOpenComPort(a);

        ///for(int i=0; i <b.length; i++)
            System.out.println(b.length);








        System.out.println();



    }

    static {
         // we need to have the dll file in the same folder as Reader18.java
         // it is to be noted that the Reader18.class should be kept in UHF folder due to package statement.
         // but the dll file should be in the folder where UHF folder is present.
         // System.loadLibrary("UHF_Reader18"); 

         System.load("C:\\Users\\Abdulaziz\\Desktop\\UHF\\Libraryes\\UHF_Reader18.dll");
     }

}  

这是读者附带的.DLL文件。

http://www.4shared.com/file/XKxPYxG3ce/UHF_Reader18.html

2 个答案:

答案 0 :(得分:1)

您应该与设备制造商联系以获取支持。没有人可以通过查看提供的dll中的方法签名来回答您的问题。

答案 1 :(得分:0)

我有相同的RFID阅读器,我遇到了同样的问题,所以如果你到目前为止还没有解决问题,我想告诉你我做了很多事情,最后我通过包括&#34; Basic.dll&#34; - 他们与SDK一起发送的文件位于&#34; UHF_Reader18.dll&#34;存在,因为它们之间似乎存在依赖关系,但只加载&#34; UHF_Reader18.dll&#34;。

在我联系他们后,他们给我发了一个测试代码,但是在这里你应该创建一个包然后将它导入到一个新项目中,并且不要忘记将包(你也可以编译)放在里面新项目的src文件夹。

对于您创建包的项目,将包名称为UHF,并将其命名为Reader18,然后在此类中复制并粘贴Reader18.java的内容(它们是在没有任何添加的情况下发送的),然后将其编译为获取Reader18.class,然后将UHF_Reader18.dll和Basic.dll放入&#34; UHF&#34;在&#34; src&#34;之后这个项目。

在将包中的所有项目包含在&#34; src&#34;之后,使用代码-below-创建一个新项目。新项目,并了解dll文件的路径。

您可以使用以下代码测试这些功能,包括导入该包:

    import UHF.Reader18.*;
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    //    System.out.println(System.getProperty("java.library.path"));
     System.loadLibrary("UHF_Reader18");
       UHF.Reader18 tnt = new UHF.Reader18();
        int arr[];
        arr=new int[3];
        int arr1[]=new int[80];
       // arr1=new byte[8];
        arr[0]=1;//serial port

        arr[1]=1;//Read/write device address

        arr[2]=5;//Baud rate
        arr1=tnt.OpenComPort(arr);
      //   arr1=tnt.OpenNetPort(255, 6000, "192.168.3.11");
         for (int m=0;m<arr1.length;m++)
        {
           System.out.println(arr1[m]);
        }///
        arr[0]=1;//address

        arr[1]=1;//handle
        arr1=tnt.Inventory_G2(arr);
        for (int m=0;m<arr1.length;m++)
        {
           System.out.println(arr1[m]);
        }
    }

}  

希望这很有帮助。