完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题:假设串口1接收了200个字节,串口接收完成后,通过消息列队把这200个数据发送给处理线程1,线程1怎么知道串口中断发过来的是200个字节的数据??
问题来源:发送消息的长度是变化的,接收消息怎么知道发送消息的长度?? 已知条件:在消息列队中初始化时,消息列队内存池大小是2048字节,每个消息大小是256个字节,消息接收的长度是256个字节,消息发送的长度是200个字节; 已确定1:消息接收设置的长度,是预设的接收消息的最大长度,在这个长度之内的数据都能接收到; 已确定2:消息结构体内的长度也是设置的最大接收长度,不是实际传送的长度。 |
|
相关推荐
4个回答
|
|
如果针对串口,可以使用空闲中断。
对于更一般的情况,不考虑数依赖据帧之间的时间间隔可以考虑以下集中方式: 增加特殊字符做结束标志,如果是文本协议可以加入特殊符号,如rn等。如果传输的内容超出可以显示的文本字符范围,那就加入类似 这样的字符。 2.如你所说,在数据帧的头部加负载长度信息,这要小心,一定不能错了。否则就麻烦了。 3.或者干脆像CAN等这些协议,让包长固定,这样处理起来方便,接收时间明确,可以做到实时性。这也是很多实时协议定长的原因吧。 |
|
|
|
|
|
|
|
我一般是这么做的,在发送给队列时,我一般定义一个结构体,结构体里包含了数组长度,数组,数据来来源等信息,线程收到后,就根据长度进行解析,如数据不完整的,等下一个数据包。
|
|
|
|
设计成结构体 含有长度成员变量
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
590 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2241 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1233 浏览 0 评论
1788 浏览 0 评论
1464 浏览 0 评论
74814 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 23:53 , Processed in 0.631575 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号