串口多机通信pc机的发送数据问题!!!
为了实现与单片机的多机通信,我们使用地址标识,也就是在发送地址字节的时候校验位为M,在发送数据字节的时候为S,这样一来我们如何去发送数据呢!
我首先是设置校验位为m发送地址字节,然后在去设置校验位为s发送数据,这样正确吗?
当我们接受数据时,如果单片机也是按照这种方式给我发送数据我怎么处理呢!
因为在调试的时候,事件的返回值为1009也就是校验位出错,我应该怎么去做呢!
[解决办法]
串行口多机通讯时,可以在发送的数据中加入地址,如:
计算机发送数据给 设备1 时,发送 0x01 data
设备2 时,发送 0x02 data
设备n 时,发送 0xn data
=======
设备收到数据后,先看看地址是不是自己的,如果是则处理,如果不是则不理。
而且,作为设备不应该主动发送数据,而是当收到计算机发送到数据后再向计算机返回数据;
否则会打架。
[解决办法]
不清楚你说的校验是怎么回事,你可以详细说明一下你现在是怎么做的。
[解决办法]
那为什么不用一样的校验方式?
[解决办法]
校验 不是用来判断数据是不是丢失的嘛?
你为什么要用两套校验呢··
[解决办法]
校验位是USART芯片产生的,你告诉USART要使用校验位那么USART根据字节中“1”的个数自动产生一个“1”或“0”.在PC上没有单片机多机通信的第9位。使用校验位后,data只能7位。
你的问题要靠“协议”来解决,如第一个字节为“地址”,地址后为数据。。。