目录

  • 参考Demo
  • 串口开发辅助工具
  • 三方包环境配置
  • 地磅相关
  • 串口冲突
  • 读取数据时有时无,更新太慢
  • 加载本地dll文件
  • 假的Windows64系统
  • 启动jar时隐藏dos命令行窗口


参考Demo

SerialPortDemo

串口开发辅助工具

  • 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位系统

地磅相关

串口冲突

关键词:

  • 串口 (COM1COM4COM7 …)
  • 波特率 (9600)

对接的地磅系统默认传输在COM1 串口 , 但是客户电脑上原来已经运行了一个对接地磅的程序, 所以COM1串口被占用了 . 导致我们新开发的程序无法继续使用这个串口 .

解决方案

买分接卡, 分出来了其他串口 , 比如COM1COM4 , 使用这些串口即可 .

读取数据时有时无,更新太慢

这个慢, 只是界面上一直没有回显地磅读取到的数据 .
原因是地磅传输数据慢 , 而电脑读取处理速度快 , 导致获取到的一直是不完整的数据, 读取字节流经常报读取异常而被迫关流 , 这就导致一直没有成型的数据获取到 .

解决方案

在地磅回传的时候 , 歇一会再从串口读取数据即可 , 比如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包的方案 , 自己尝试的最佳方案: 放在JDKbin安装目录下 , 然后在代码中通过环境变量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