用串口跟下面多台机器通讯应该怎么设计?
假设下面有3台下位机地址分别是01 02 03。上位机发送A+地址后下位机返回数据,下位机不主动发送数据。
希望实现的功能是轮询这几个下位机的数据,
我是这样做的:
开个定时器 1s里完成1次全部的查询,发送A01之后sleep100ms等待接收,这个时候应该已经收到下面发上来的数据了,再发A02 sleep100ms 发A03这样下去,但是发现实际收的数据都是错乱的。
问题:
1、我这样的思路对吗?
2、最好的方法是不是开2个线程 1个发送 1个接收?有没参考的文章?
谢谢 mfc 串口
[解决办法]
思路没没问题,只是用sleep延时再接收不好.你先和一台下位机通信,没问题后再和两台下位机通信,如果两台没问题,那么和三台也应该没问题.
不能用多个线程和串口通信,因为串口就一个,两个下位机同时往上往就会出现数据混乱,除非计算机有三个串口分别和下位机通信.
另外,你发送命令后不要sleep,这样有可能计算机是不会接收的(就是你这个程序已停止工作了,计算机干别的了,除非sleep不会影响串口的底层驱动接收部分),你发送命令后就查询接收,就是不断的接收,当时间超过一定时间(比如500毫秒)还没收到就退出,再和下一个下位机通信
[解决办法]
开个定时器 1s里完成1次全部的查询,发送A01之后sleep100ms等待接收,这个时候应该已经收到下面发上来的数据了,再发A02 sleep100ms 发A03这样下去
...数据之间没有开头,结尾的吗,如果是这样就难搞了,一般都有可以判断开关,结尾的字节,用以区分