JAVA操作串口:多线程访问同一串口,效率提升方案讨论帖(modbus协议)
现有需求如下:
N个线程,访问同一串口(基于modbus协议),如何在不损坏串口的情况下,提升线程访问效率?
损坏串口:由于同时接收的数据过多造成串口down掉.
请大家发表各自的看法.
现在我已经对这些线程做了很多的时序控制,已经勉强能持续运行10个小时左右.
希望能在这里找到一劳永逸的方案..不盛感激.
[解决办法]
多线程不负责跟串口通信,而是将信息放入队列,再由一个单独的线程负责将队列中的信息发给串口,这样做可以不?
[解决办法]
LZ是调用别人的第三方的串口驱动还是自己做的驱动?
如果是自己写的驱动,要主要协调好时钟,也就是处理好串口控制线的控制(一般来说有控制线和数据线)
如果是使用javax.comm包,那么open的时候,如果串口被使用,就会抛出异常。不知道LZ所谓的down是什么意思?估计是这里的处理没协调好。
[解决办法]
多线程访问串口,如何保证每个线程能够取到自己线程所需要的东西?线程不发数据?如何用发数据的线程控制好读数据的线程的先后顺序?