目录
- 参考Demo
- 串口开发辅助工具
- 三方包环境配置
- 地磅相关
- 串口冲突
- 读取数据时有时无,更新太慢
- 加载本地dll文件
- 假的Windows64系统
- 启动jar时隐藏dos命令行窗口
参考Demo
串口开发辅助工具
- Virtual Serial Port Driver虚拟串口vspd
- 深蓝串口调试工具
三方包环境配置
RXTXcomm
官网链接
下载好以后 , 按照Install.txt
中的说明配置本地环境即可, 无论是开发和最终部署 , 都要有这些环境
Copy RXTXcomm.jar ---> <JAVA_HOME>\jre\lib\ext
Copy rxtxSerial.dll ---> <JAVA_HOME>\jre\bin
Copy rxtxParallel.dll ---> <JAVA_HOME>\jre\bin
需要注意的是, 环境分64和32位系统
地磅相关
串口冲突
关键词:
- 串口 (
COM1
、COM4
、COM7
…) - 波特率 (
9600
)
对接的地磅系统默认传输在COM1
串口 , 但是客户电脑上原来已经运行了一个对接地磅的程序, 所以COM1
串口被占用了 . 导致我们新开发的程序无法继续使用这个串口 .
解决方案
买分接卡, 分出来了其他串口 , 比如COM1
、COM4
, 使用这些串口即可 .
读取数据时有时无,更新太慢
这个慢, 只是界面上一直没有回显地磅读取到的数据 .
原因是地磅传输数据慢 , 而电脑读取处理速度快 , 导致获取到的一直是不完整的数据, 读取字节流经常报读取异常而被迫关流 , 这就导致一直没有成型的数据获取到 .
解决方案
在地磅回传的时候 , 歇一会再从串口读取数据即可 , 比如sleep个100毫秒
// 添加串口监听
SerialPortManager.addListener(mSerialport, new SerialPortManager.DataAvailableListener() {
@Override
public void dataAvailable() {
byte[] data = null;
try {
//☆☆☆睡一会☆☆☆
Thread.sleep(100);
if (mSerialport == null) {
ShowUtils.errorMessage("串口对象为空,监听失败!");
} else {
// 读取串口数据
data = SerialPortManager.readFromPort(mSerialport);
......
}
} catch (Exception e) {
ShowUtils.errorMessage(e.toString());
}
}
});
参考链接
https://www.jianshu.com/p/b26cf7a8bc7d
加载本地dll文件
网上有各种打进war
包和jar
包的方案 , 自己尝试的最佳方案: 放在JDK
的bin
安装目录下 , 然后在代码中通过环境变量JAVA_HOME
加载即可
public static String strFilePath = System.getenv("JAVA_HOME") + "\\jre\\bin\\WTY.dll";
假的Windows64系统
客户电脑显示是64位系统 , 但是安装64位的包却一直运行失败 . 最后换成32位的竟然正常了 , 一脸懵…
启动jar时隐藏dos命令行窗口
传统启动方式
java -jar test.jar
隐藏dos命令行窗口启动方式
start javaw -jar test.jar