2019-08-17 07:29发布
enan 发表于 2017-6-11 12:45 不是上位机间隔10ms发送数据,你这完全是崭新的新手啊 是说的这个10ms是两帧数据之间的最小间隔10ms ...
yinqirui9 发表于 2017-6-11 13:00 那打开定时器是 用定时中断 来扫描吗?
一个爱做梦的人 发表于 2017-6-11 13:12 自己定通信协议啊,比如: 序号 字段名称 位宽 字段功能 0 起始标志 1 约定为fa
最多设置5个标签!
论坛都有类似的帖子了:
http://www.openedv.com/posts/list/53066.htm
那打开定时器是 用定时中断 来扫描吗?
是滴,当收到第一个字节打开一个定时器,之后每次收到一个字节重新手动装填定时器,如果发生中断了就是表示接收完成了。
不过一般不会用硬件定时器来做,如果有8个串口要开8个定时器,一般自己写个软件定时器
序号 字段名称 位宽 字段功能
0 起始标志 1 约定为fa
1 长度 1 表示操作命令+内容的长度
2 操作命令 1 00h(设置) / 01h(获取) /02h(返回)
3 内容 n
4 校验字节 1 除字头字尾外的所有字节ODD校验
5 结束标志位 1 约定为0xFB
这样在串口中断里收到头后,开始计数,等收到尾字节后判断(计数-4)和长度是否相等,判断自己计算的校验和校验字节是否相等,然后做相应处理,是丢弃,继续接受,还是保存
同意楼上,帧头+命令+数据+帧尾+校验和,这是标准做法。
enan提出的超时判断帧结束,个人感觉不如帧尾+校验的判断方法实用。
用帧间隔来判断帧结束,又如何能保证数据完整性呢?
一周热门 更多>