串口轮询485总线方式
串口轮询485总线方式,求助
单串口下,上位机控制并获取多下位机信息,采用485总线方式,我能想到就是轮询方式,因为485就是半双工通信,考虑到还有可能某个子机通信不正常等因素,如何把时序安排好,我没有这方面经验,各位大哥谁有这方面的材料或者知道哪里有类似的代码,能否提供下参考下,这样写出来的程序不至于因为我考虑不周全而出问题,谢谢了
------解决方案--------------------
起一个线程轮训端口,设备对象可以加一个标志,如果某设备通信故障,设置该标志,轮训时可适当延长该设备巡检时间间隔或跳过。
------解决方案--------------------
1.找到设备1。如果没找到继续找,超时则提示并找下一个设备
2.按协议通信。如果通信故障,则提示并找下一个设备
3.正常通信完毕。找下一个设备
------解决方案--------------------
应该不受影响。
你的轮询次数一天较少,对实时通讯要求不高,可以同OnTimer()来做就行了。
在OnTimer调用CSerialPort打开端口,然后在启一个Timer事件,定时发送(时间间隔可以长一点,这样就无啥超时处理了,反正通讯要求不高)就可以了。
接收线程用来处理接收数据即可。如果收到,则做个正常标识,未收到,则做个超时或故障标识即可。
如果考虑到一次通讯不成功,则可以考虑所有设备或故障设备多通讯几次
轮询完毕,退出接收线程 ,关闭CSerialPort打开的端口。
我想这样就满足你的需求了。
------解决方案--------------------
起线程是不会影响的,同意 Funniest 和 echoyin59 的观点
单串口下,上位机控制并获取多下位机信息,采用485总线方式,我能想到就是轮询方式,因为485就是半双工通信,考虑到还有可能某个子机通信不正常等因素,如何把时序安排好,我没有这方面经验,各位大哥谁有这方面的材料或者知道哪里有类似的代码,能否提供下参考下,这样写出来的程序不至于因为我考虑不周全而出问题,谢谢了
------解决方案--------------------
起一个线程轮训端口,设备对象可以加一个标志,如果某设备通信故障,设置该标志,轮训时可适当延长该设备巡检时间间隔或跳过。
------解决方案--------------------
1.找到设备1。如果没找到继续找,超时则提示并找下一个设备
2.按协议通信。如果通信故障,则提示并找下一个设备
3.正常通信完毕。找下一个设备
------解决方案--------------------
应该不受影响。
你的轮询次数一天较少,对实时通讯要求不高,可以同OnTimer()来做就行了。
在OnTimer调用CSerialPort打开端口,然后在启一个Timer事件,定时发送(时间间隔可以长一点,这样就无啥超时处理了,反正通讯要求不高)就可以了。
接收线程用来处理接收数据即可。如果收到,则做个正常标识,未收到,则做个超时或故障标识即可。
如果考虑到一次通讯不成功,则可以考虑所有设备或故障设备多通讯几次
轮询完毕,退出接收线程 ,关闭CSerialPort打开的端口。
我想这样就满足你的需求了。
------解决方案--------------------
起线程是不会影响的,同意 Funniest 和 echoyin59 的观点