社区
单片机/工控
帖子详情
RS485通信的帧格式问题
wopabe
2010-09-30 10:39:07
有的帧格式是:起始字节 数据长度 数据长度(重复) 起始字节(重复) ... 校验字节 结束字节
在写通信接收程序时,首先判断第一个起始字节,看是不是要接收的帧,
但我不知道数据长度、数据长度(重复)和起始字节(重复)怎么接收,是直接接收还是先判断再接收?
在线等各位大侠的指导!
...全文
2829
13
打赏
收藏
RS485通信的帧格式问题
有的帧格式是:起始字节 数据长度 数据长度(重复) 起始字节(重复) ... 校验字节 结束字节 在写通信接收程序时,首先判断第一个起始字节,看是不是要接收的帧, 但我不知道数据长度、数据长度(重复)和起始字节(重复)怎么接收,是直接接收还是先判断再接收? 在线等各位大侠的指导!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wopabe
2010-10-25
打赏
举报
回复
谢谢各位了
galle
2010-10-10
打赏
举报
回复
判断开始头,不同就丢弃,相同就开始接收第一个数据,接收第二个数据长度,同第一个比较,相同就连续接收数据长度个数据。否则从头开始。接收完数据后,接收验证码,再判断!
mb0919
2010-10-09
打赏
举报
回复
串口中断里面只做一个简单的判断,设置一个接收字节个数的变量,接收起始字节并判断,若不是,接收字节清零,继续判断帧头;如果是收字节加一;依次类推,发生错误后接收字节个数清零,直到正确接收完毕。
wangshao123lll
2010-10-08
打赏
举报
回复
好难。。。。
yanzhaozhiqing
2010-10-01
打赏
举报
回复
看看 学习一下
DISINHUI
2010-10-01
打赏
举报
回复
这个问题应该这样看:
1.如果缓冲区足够,则可以尝试接受两个数据包,然后判断是否有合法完整数据包。
2.如果数据缓冲区不够,找头的办法也是可行的。
从实际应该用角度上说,最好的办法是第一种方案。如果空间受限,则采用第二种方案,不过最好是硬件串口,如果软件模拟,可能会降低发送成功率。
lbing7
2010-09-30
打赏
举报
回复
直接接收还是先判断再接收?
你的协议约定
我习惯于,收完完整的一帧再做有效性检查
dian_technology
2010-09-30
打赏
举报
回复
我司485通信格式与你所说差不多,我处理的大概流程是这样的:
一,先判断帧头(起始字节),若不对,弃包。
二,再接收整帧的数据,接收完毕后,根据接收到的数据长度和实际工资接收到的数据个数比较,若不等,弃包。
三,再将接收到的数据帧进行校验,将计算的校验值与接收到的校验值比较,若不等,弃包。
wopabe
2010-09-30
打赏
举报
回复
哥,你太有才了!我第一次见你这么有才的
codesnail
2010-09-30
打赏
举报
回复
实践是检验真理的唯一方法。
wopabe
2010-09-30
打赏
举报
回复
我想的流程是这样的:
1 接收起始字节并判断,若不是,丢弃,再接收数据长度;
2 判断数据长度(重复)和刚才的数据长度一样不?若相等,接收,否则丢弃。同理进行起始字节(重复);
3 根据数据长度大小接收后面的数据;
4 校验,接收停止字节。
不知道我说清楚没。
我的问题是我的流程对吗?
codesnail
2010-09-30
打赏
举报
回复
不知道数据长度你不是能判断起始和结束字节吗?
不知楼主疑惑在哪?
R
S4
85
测试例程,单片机控制R
S4
85
通信
R
S4
85
测试例程
29. R
S4
85
通信
实验.rar
STM32MODbus通讯协议例子,用于初学者学习,已测试有效
r
s4
85
通信
协议
这个是一类人所4
85
通讯协议
STM32F407固件库-R
S4
85
通信
实验.zip
STM32F407 ARM例程
基于STM32的R
S4
85
通信
实验,STM32的R
S4
85
程序,C,C++
在Keil平台,基于STM32F103,学习应用R
S4
85
MODBUS-RTU通讯协议
单片机/工控
27,521
社区成员
28,799
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章