2020-01-20 19:15发布
konger2012 发表于 2014-11-20 12:26 不实用,还用DELAY ;另外如果第一次发的码如果是发一个或者是两个,比如就发一个0XA2,程序中RxBuf[rr++]=S ...
最多设置5个标签!
好多年的程序了,串口接收哪里有delay了?这个是配合协议做的,还带校验 ,地址判断 ,首字节判断,包含了排除误码,如果有一个条件不符合,数据就是不正确的(包含硬件通讯干扰造成数据),就舍弃了。
你说的这种情况,你觉得符合pp pd 协议 吗? 如果不符合协议的首字节,rr 已经置为0,再下来判断地址,地址不对,数据也不能要啊,就算碰巧对了,还有最后一步 校验接收数据 呢? 做到这3步骤,才能算1次有效的数据。
if (RxBuf[0]== 0xA0)
AutoSpot=1; //P
else if (RxBuf[0]== 0xFF)
AutoSpot=2; //D
else
{
rr = 0; //清0
}
break;
此时是不是RR= 1呢?
如果我等再发一串数据0xa0......,当然这串数据是符合楼主的协议的,既然符合是否应该动作呢?但是因为没有清RR,所以接收错误。当然了,一般也不会这么去发数据了,如果有呢?
一周热门 更多>