求指导,一个串口通讯协议。大大们我错了,改正

2020-02-05 08:55发布

本帖最后由 lhcyy 于 2012-5-2 09:35 编辑

这几天被串口通讯协议弄的头晕。有高手能帮忙发个简单程序,并讲解下嘛。


因为我是这样理解的,我想同时发两个8位数据,但是串口一次只能接收一个。这里就要用通讯协议了,但是我不知道该怎么弄,有没有资料什么的分享下。或者发个程序顺便普及提高下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
视觉℡
1楼-- · 2020-02-07 04:18
留名备用!!!
yangkuan85988
2楼-- · 2020-02-07 06:15
 精彩回答 2  元偷偷看……
jswd0810
3楼-- · 2020-02-07 10:02
可以看看这个,我就是用它写的
siyeb
4楼-- · 2020-02-07 14:28
1.首先定义一个协议,如下,当然协议的头尾可以自己随便写。

55 DAT1 DAT2 AA
|      |        |     +------- 协议尾
|      |        +------------- 数据2
|      +---------------------- 数据1
+----------------------------- 协议头

2.协议定义完了,在程序里面咋实现呢?当然是判断协议头和协议尾了~例如:
在串口里面收数,并定义一个变量来存储。然后在弄一个指针,收一个数加一次。然后做个判断就行了,如下
if(UartRev0==0x55)&&(UartRev3==0xAA)
{
       DAT1……
       DAT2……
}
lhcyy
5楼-- · 2020-02-07 17:32
siyeb 发表于 2012-6-30 17:50
1.首先定义一个协议,如下,当然协议的头尾可以自己随便写。

55 DAT1 DAT2 AA

首先感谢下这位同行。从你说的我明白了很多。
其次我有个一直的疑惑想请帮忙看下。单片机串口一次接收是一个8位数据。然后RI置位(51系列)。那么我们一个协议里面包含了四个8位数据
报头,数据1,,数据2,报尾。那么程序怎么判断一次是否接收完成。如果发过来一个6个字节的该怎么取舍。是否接到四个字节就自行进行判断。
而且如果上位机不停的发会出现什么情况
siyeb
6楼-- · 2020-02-07 19:20
lhcyy 发表于 2012-7-2 13:55
首先感谢下这位同行。从你说的我明白了很多。
其次我有个一直的疑惑想请帮忙看下。单片机串口一次接收是 ...

有四位且报头报尾均正确的话就认为一次协议传输完成。至于多出来的那些,要看你怎么处理,一般是存在缓存里作下一次报文的判断。

一周热门 更多>