java comm例子为什么读不到串口啊

java comm例子为什么读不到串口啊,第1张

配置好串口环境,不然在设备管理器里看到串口,用java也是读取不到串口的。
还有有时候你配置好环境,运行之后也能列出串口。但过一段时间后,找不到串口了,然而在设备管理器里还能看到串口,以前也能运行,环境不存在问题,重启也没用。你可以这样解决,把win32comdll复制到eclipse项目目录下,然后在main方法一开始添加如下代码,下面这样不需要配置comm环境了
CommDriver driver = null;
String driverName = "comsuncommWin32Driver";
try {
driver = (CommDriver) ClassforName(driverName)newInstance();
driverinitialize();
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}

也不是特别麻烦,你先要清楚串口和服务器用的什么协议,假设串口用232,服务器采用TCP,那么你需要做的是建立一个客户端的发送模块,和一个串口的 *** 作模块(结合必须要用到多线程,以队列或者委托来做数据交换);在测试之前一定要保证串口和客户端发送接收是ok的才能做结合功能。
因为你串口已经做好了,那你需要的是将采集到的数据(字符串)保存到数组中,然后创建一个指向数组的指针p,然后在客户端模块里,将发送的数据写成&p。建议先将数据转16进制发,应该没毛病。

需要一个包 commjar
需要一个配置文件 javaxcommproperties (工程根目录)
(或者放在JDK里)
// 取得端口句柄
CommPortIdentifier id = CommPortIdentifiergetPortIdentifier(portName);
port = (SerialPort) id open("SerialDemo", 30000);
port setSerialPortParams(9600, SerialPortDATABITS_8, SerialPortSTOPBITS_1, SerialPortPARITY_NONE);

port notifyOnDataAvailable(true);
port notifyOnBreakInterrupt(true);
port enableReceiveTimeout(delayTime);
读取之类的自己写就行了,(port getInputStream()),完事之后别忘了关掉端口,不然下次就不能用了,只能重启系统
配置文件里就一行:
Driver=comsuncommWin32Driver
----------------------------------
你设个断点单步调试看一下原因,那个SerialBean是你自己写的,谁也不知道里面整啥了,单步调试就知道哪里错误。
抛出异常了Exception in thread "main" javalangNullPointerException
at serialSerialBeanWritePort(SerialBeanjava:114)
从这里看,是在SerialBeanjava的114行(函数WritePort)的一个东西,它的值是null,所以报错了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/13167594.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-15
下一篇 2023-06-15

发表评论

登录后才能评论

评论列表(0条)

保存