zoukankan      html  css  js  c++  java
  • JNA使用

    JNA与C对应的数据类型:

    image

    image

    注意:

           使用byte[]对应C++中的char* 可以返回函数执行的结果值

    一、添加JNA需要的jar包

         1、jna.jar

         2、platform.jar

     

    二、编写调用DLL的类

    package rfid;
    
    import com.sun.jna.*;
    import com.sun.jna.ptr.*;
    
    public interface MasterRD extends Library {
    
        MasterRD instance = (MasterRD) Native.loadLibrary("MasterRD",
                MasterRD.class);
    
        int lib_ver(IntByReference ver);
    
        int rf_init_com(int port, NativeLong baud);
    
        int rf_beep(short idev, byte msec);
    
        int rf_request(short idev, byte model, short[] tagtype);
    
        int rf_anticoll(short idev, byte bcnt, byte[] psnr, byte[] prlength);
    
        int rf_select(short idev, byte[] psnr, byte srclen, byte[] size);
    
        int rf_M1_authentication2(short idev, byte model, byte block, byte[] key);
    
        int rf_M1_read(short idev, byte block, byte[] pdata, byte[] plen);
    
        int rf_M1_write(short idev, byte block, byte[] data);
    
        int rf_light(short idev, byte color);
    
        int rf_ClosePort();
    }

    其中MasterRD为MasterRD.dll 文件名,对应于DLL中的函数如下【部分举例】:

    /*
    *    提取DLL接口 
    */
    #ifndef _EXPORT_FUNC_H_
    #define _EXPORT_FUNC_H_
    
    
    #include <Windows.h>
    
    int (WINAPI* lib_ver)(unsigned int *nVer);
    
    int (WINAPI * des_encrypt)(unsigned char *szOut,unsigned char *szIn , unsigned int inlen,unsigned char *key,unsigned int keylen);
    
    int (WINAPI * des_decrypt)(unsigned char *szOut,unsigned char *szIn , unsigned int inlen,unsigned char *key,unsigned int keylen);
    
    int (WINAPI * rf_init_com)(int port,long baud);
    
    int (WINAPI * rf_init_device_number)(unsigned short icdev);
    
    int (WINAPI * rf_get_device_number)(unsigned short *Icdev);
    
    int (WINAPI * rf_get_model)(unsigned short icdev,unsigned short *Version);
    
    int (WINAPI * rf_get_snr)(unsigned short icdev,unsigned char *Snr);
    
    int (WINAPI * rf_beep)(unsigned short icdev,unsigned char msec);
    
    #endif

     

    三、使用

    MasterRD.instance.lib_ver()  ….

  • 相关阅读:
    端口监听与telnet
    strace
    Java Web SSH框架总是无法写入无法读取Cookie
    很反感Java Web 三层框架
    关于武侠游戏的一些想法(长期整理)
    奇怪的Lisp和难懂的计算机程序的构造和解释
    编程的智慧(转自王垠个人博客)——满满的编程实践经验不看就错过
    最近买了个Mac Pro,用起来感觉是去年买了个表
    Python手动构造Cookie模拟登录后获取网站页面内容
    奇怪的JS正则之 /[A-z]/.test("\"); // true
  • 原文地址:https://www.cnblogs.com/luosongchao/p/3616149.html
Copyright © 2011-2022 走看看