我在做一个软件,需要和4个串口进行通信:射频卡、仪表1、数字量输入输出卡和仪表2,通讯协议各不相同,其中射频卡、数字量输入输出卡和仪表2还有RS485接口;
每个仪表分别与PC的串行通信已经明白。例如仪表1我用MSCOMM控件采用事件驱动方式实现。
请问:我如何实现PC与四个串口的通讯同时进行。
方法1:采用4个MSCOMM控件分别控制4个串口,每个串口与原来单串口写法一样
方法2:采用多线程,一个线程控制一个串口,此时还能用MSCOMM控件吗?
方法3:采用485方式组网,用一个串口进行控制,那我还能用事件驱动方式吗?
请朋友详解,并提出自己的方案

解决方案 »

  1.   

    采用方案3你需要详细了解4个东东的底层通信协议,确保通信的安全,也就是说,发给1的信号需要确保不会234接收后有反馈,如果不是你自己开发的东西,基本不支持方案3
    mscomm本身有线程监控接收的,基本上你也不用再写线程了。
    个人认为方案1最安全。
      

  2.   

    我做一个USB口转7个串口通信的,使用pcomm,接收数据采用中断方式,多线程
      

  3.   

    我做的一个小项目,标定设备用的,用了两种通信协议(一种专用,一种是MODBUS)。设备功能有四种:一是采集数据,持续的,但是采集中还得交互控制,用一个线程采集,有交互时,就暂停线程。二是压力温度采集,这个只采集,没交互,也开个线程。三是几个手操器控制,这个只是控制和反馈状态,不用线程。四是PLC控制(PLC用于控制电动阀、气泵水泵等),也是控制和状态反馈,不用线程。因此用了四个串口(一块MOXA四串口卡)。所有口上都是485总线,当然只挂一个设备的,可以用232。总之我觉得除了考虑通信协议,还要考虑设备功能来分,这样比较容易处理。