打印

求帮助,UART 算法

[复制链接]
1900|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mick_liang|  楼主 | 2009-5-8 14:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机通过UART/SCI串口,接收命令字,3到5个字节不等,如何正确的将命令字解码?没有校验位。
比如:上位机传送过来的命令字为 a0 50 01
MCU在接收到命令字后如何将这几个字节正确解析出来?
每接受到一组命令就解析,还是将接受到的命令字存在一个定义的数组里,然后解析,如何解析?

想了一个星期了,不知道如何做?
那位大哥指点一下。

相关帖子

沙发
zzw111| | 2009-5-8 14:49 | 只看该作者

不解?

上下位机通讯不是应该有协议的吗?

使用特权

评论回复
板凳
mick_liang|  楼主 | 2009-5-8 15:48 | 只看该作者

就定义了命令头

命令字中值定义了命令头,
MCU串口通信就是负责接收和发送。

使用特权

评论回复
地板
mohanwei| | 2009-5-8 16:13 | 只看该作者

帧头+长度+数据+校验+帧尾

帧头和帧尾可以选两个自己系统中少用的字节,如@,$……碰到数据中有帧头帧尾,需转义。
有必要可以在帧头后面加个从机地址;
校验视自己的系统能力,可以选CRC8/16/32,甚至MD5,SHA1……

想要通信真正的健壮,就不要考虑简单的无校验、奇偶校验什么了……

使用特权

评论回复
5
mick_liang|  楼主 | 2009-5-8 16:32 | 只看该作者

将接收到的数据与定义的命令相比较

内部已经定义了命令,
要做的是将接收到的数据与定义的命令相比较,已确定该做什么样的功能反映。
如果解析后的命令与定义的命令不符就放弃。

使用特权

评论回复
6
ayb_ice| | 2009-5-9 09:36 | 只看该作者

LZ: 协议是什么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

87

帖子

0

粉丝