求帮助,UART 算法

[复制链接]
2682|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……

想要通信真正的健壮,就不要考虑简单的无校验、奇偶校验什么了……
 楼主| mick_liang 发表于 2009-5-8 16:32 | 显示全部楼层

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

内部已经定义了命令,
要做的是将接收到的数据与定义的命令相比较,已确定该做什么样的功能反映。
如果解析后的命令与定义的命令不符就放弃。
ayb_ice 发表于 2009-5-9 09:36 | 显示全部楼层

LZ: 协议是什么

您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

87

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部