2020-02-05 08:55发布
siyeb 发表于 2012-6-30 17:50 1.首先定义一个协议,如下,当然协议的头尾可以自己随便写。 55 DAT1 DAT2 AA
lhcyy 发表于 2012-7-2 13:55 首先感谢下这位同行。从你说的我明白了很多。 其次我有个一直的疑惑想请帮忙看下。单片机串口一次接收是 ...
最多设置5个标签!
55 DAT1 DAT2 AA
| | | +------- 协议尾
| | +------------- 数据2
| +---------------------- 数据1
+----------------------------- 协议头
2.协议定义完了,在程序里面咋实现呢?当然是判断协议头和协议尾了~例如:
在串口里面收数,并定义一个变量来存储。然后在弄一个指针,收一个数加一次。然后做个判断就行了,如下
if(UartRev0==0x55)&&(UartRev3==0xAA)
{
DAT1……
DAT2……
}
首先感谢下这位同行。从你说的我明白了很多。
其次我有个一直的疑惑想请帮忙看下。单片机串口一次接收是一个8位数据。然后RI置位(51系列)。那么我们一个协议里面包含了四个8位数据
报头,数据1,,数据2,报尾。那么程序怎么判断一次是否接收完成。如果发过来一个6个字节的该怎么取舍。是否接到四个字节就自行进行判断。
而且如果上位机不停的发会出现什么情况
有四位且报头报尾均正确的话就认为一次协议传输完成。至于多出来的那些,要看你怎么处理,一般是存在缓存里作下一次报文的判断。
一周热门 更多>