打印

串口通信

[复制链接]
1359|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
victor3l|  楼主 | 2012-3-1 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当单片机接到:0x24,0x45,0x64,0x0d这4个16进制数后,给上位机返回相关信息。请问我怎样确定接受正确了?我要预设一个数组把这几个数据存起来,然后将收到的逐一与之比较?我该怎么存储上位机发过来的数据啊,它一次就把那4个数据发过来了。

相关帖子

沙发
liang7143| | 2012-3-1 17:22 | 只看该作者
这个需要 自己做一个简单的协议
比如LZ想的  简单,但是误触发比较高
可以加入 帧头 帧尾 还有超时处理,可以很大的增加 接受的正确率

使用特权

评论回复
板凳
yewuyi| | 2012-3-1 17:27 | 只看该作者
请百度:串行通信协议。

例如常见的MOSBUS等。

使用特权

评论回复
地板
程序匠人| | 2012-3-1 17:54 | 只看该作者
一个缓冲数组,加一个接受字节计数器变量。

每收到一个,压入数组(以计数器为指针),然后计数器+1,判是否溢出。如果溢出则接收结束,进行校验、解析、应答等动作。

使用特权

评论回复
5
ningling_21| | 2012-3-2 07:53 | 只看该作者
简单的判断正误方法:计算接收数据的累加和。和接收到的累加和比较,如果两者相等则正确,否则错误。
累加和是发送方计算后一起发过来的。
也可以用其它校验方式,如:CRC等等。

使用特权

评论回复
6
victor3l|  楼主 | 2012-3-2 08:34 | 只看该作者
4# 程序匠人
谢谢匠人的指点

使用特权

评论回复
7
victor3l|  楼主 | 2012-3-2 08:35 | 只看该作者
3# yewuyi
谢谢呵

使用特权

评论回复
8
rtgchym| | 2012-3-2 10:24 | 只看该作者
定义一个缓冲区,在接收中断里把接收到的数据逐位压入缓冲区,当全部存入后置位标志位,再在主函数里根据标志位状态按位比较吧,我以前是这样做的,还好用

使用特权

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

本版积分规则

77

主题

308

帖子

5

粉丝