• 跨平台通用的HID、USB串口JAVA桌面应用


    记录一下从零开始开发一个Windows和Linux通用的HID和USB串口的JAVA应用DEMO,实现简单的连接,收发数据。

    开发工具:IDEA,自行查询下载安装步骤,我安装的版本是2018.3,参考网上教程第一次使用,怕界面不一致所以安装旧点的。

    一、HID库

    HID库源码:https://hub.連接.台灣/signal11/hidapi,需要下载源码编译自定义的java native接口的库。

    1.编译Windows下的dll:

    参考库的readme.txt可以先在windows的VS上编译dll,需要添加依赖库setupapi.lib,测试通讯是否正常,最后编译的时候最好选择属性/C++/代码生成为MT或者MTD减少依赖的动态库。用java jni native windows关键词查询window jni使用教程,编译dll,在java层调用测试。

    比如:https://www.cnblogs.com/sysu-huangwei/p/7466481.html

    2.编译Linux下的so:

    Linux端同理,需要依赖libudev,没有的话需要先安装。源码使用linux/hid.c,编译生成so。在Linux上进行测试,可以用javac指令编译生成class文件,运行测试。运行的时候如果找不到类可能需要加上包名:java 包名.类名。

    根据以上步骤,在Windows和Linux端都成功编译生成了库,并且测试可以正常收发数据,剩下的就是应用界面开发以及调用库接口就可以了。

    二、USB串口库

    USB串口库:http://rxtx.qbang.org/wiki/index.php/Download

    串口库使用可参考:https://blog.csdn.net/kong_gu_you_lan/article/details/52302075

    我使用的版本是rxtx-2.2pre2-bins,解压后将RXTXcomm.jar和rxtxSerial.dll移动到IDEA工程目录的libs目录下,没有就新建一个,编译的HID库也移动到此目录下,在IDEA设置中添加依赖库路径,即libs的路径。

    rxtx-2.2pre2-bins版本有个坑,在Linux下,枚举不到ttyACM0串口,参考https://bugs.launchpad.net/ubuntu/+source/rxtx/+bug/367833,需要添加

    if(System.getProperty("os.name").toLowerCase().contains("linux"))
    System.setProperty("gnu.io.rxtx.SerialPorts", "/dev/ttyACM0")

    再获取系统的所有串口,不限制在Linux下会影响Windows下枚举串口。

     

     导入jar包:

     

     转载请注明出处:https://www.cnblogs.com/linguinost/p/15922914.html

    三、IDEA新建工程:

    1.新建工程教程:https://www.jianshu.com/p/cdca9a30b86b

    用到的组件有JButton(按钮)、JTextArea(不带拖动条)、TextArea(自带拖动条)、JLabel(说明,配合JTextField使用)、JTextField(输入文本框)、JComboBox(多选框)。

    布局使用固定布局,setLayout(null),使用setBounds标记位置和长宽,使用addActionListener实现按钮点击后的操作,最后完成的界面如下:

    2.打包生成可运行jar:

    file - project structure

    需要注意META-INF文件夹路径,选错可能生成的jar没有编进全部java文件,可以解压查看jar是否编译正常。

    新建lib目录,右键将依赖的串口jar添加进去:

    打包生成jar,将dll库以及串口jar复制到打包生成的jar所在文件夹的lib内,运行.bat测试:

    bat内容,将当前lib文件夹临时加入环境变量,运行jar:

    @echo off
    set PwdPath=%~dp0\lib
    echo %PwdPath%
    set PATH=%PATH%;%PwdPath%
    java -jar xxx.jar
    pause

    也可以直接把动态库复制到C:\Windows\System32(Windows)或/usr/lib(Linux),运行java -jar xxx.jar。Linux环境下可能需要root权限,我在ubuntu虚拟机测试,没有root权限不能连接HID或者USB串口。

  • 相关阅读:
    Android的数据存储
    Servlet第一天
    JavaScript高级程序设计读书笔记(3)
    Interesting Papers on Face Recognition
    Researchers Study Ear Biometrics
    IIS 发生意外错误 0x8ffe2740
    Father of fractal geometry, Benoit Mandelbrot has passed away
    Computer vision scientist David Mumford wins National Medal of Science
    Pattern Recognition Review Papers
    盒模型bug的解决方法
  • 原文地址:https://www.cnblogs.com/linguinost/p/15922914.html
Copyright © 2020-2023  润新知