5月份有个项目,需要通过程序给串口发送信号,通过串口通讯到供应商控制板,从而控制硬件设备的开启和关闭。其实这是一个很简单的东西,之前也写过,就是个java串口通讯开发,根据之前经验,使用rxtxSerial的包来开发,直接用输出流也好,用modbus也好,都可以用。
rxtxSerial这玩意好像是sun做的,后面被抛弃了,一直没人维护和更新。我用的版本是2.2,用起来也比较麻烦,还要先把rxtxxParallel.dll和rxtxSerial.dll放到系统目录下(windows的话就是system32)的,还要把jar包放jdk目录下。
开发也比较顺利,很快实现了控制逻辑,但是很快就发现一个严重的问题,程序直接闪退。我用的tomcat来部署,tomcat服务直接给我宕掉了,没有报错,没有异常获取,直接就宕机了,打印戛然而止,没有任何信息。后来通过tomcat生成的dmp文件和增加打印行数,定位到代码:
这个setRate就是我自己写的一个方法:
public static void setRate(String modbusSpeed) {
try {
mSerialport = openPort("COM8", CAMERA_BAUD_RATE);
logger.info("打开COM8串口完成");
byte[]