在嵌入式设备上将C89中的字节流转换为数据包流的方法

在嵌入式设备上将C89中的字节流转换为数据包流的方法,第1张

概述我正在使用一个使用rs232(rs232 over USB)连接到PC的嵌入式设备. 我正在考虑开发自己的协议: < MAGIC>< LENGTH< BINARY DATA>< CRC> 但我不想重塑轮子. 请注意:我正在考虑非常受限的设备:4kb的RAM,没有内核,也没有标准的C lib. 你可以考虑一个标准的方法(也许是开源库)? 如果您编写自己的解决方案确实有最佳做法? >在软件包末尾使用M 我正在使用一个使用rs232(rs232 over USB)连接到PC的嵌入式设备.

我正在考虑开发自己的协议:

< MAGIC>< LENGTH< BINARY DATA>< CRC>

但我不想重塑轮子.

请注意:我正在考虑非常受限的设备:4kb的RAM,没有内核,也没有标准的C lib.

你可以考虑一个标准的方法(也许是开源库)?

如果您编写自己的解决方案确实有最佳做法?

>在软件包末尾使用MAGIC字节
>也许最好使用时间间隔而不是分隔符?
>如何在流二进制数据中找到包的开始?
>也许最好使用文本协议?

更新:
请重新阅读这个问题.我不应该要求图书馆,而是要求良好的做法.

解决方法 有关简单协议的详细信息,请参见 this answer I gave to a very similar question.

回应您的具体要点:

>数据包末尾的“魔术”字节不会造成任何伤害,但如果您已经知道数据包应该有多长时间,并且具有CRC,则它们是多余的.
>指定超时时间可能是明智的,因此如果一个数据包中的字节之间存在太大的差距,则会出现错误.使用Modbus后,我不相信在其他地方使用时间分隔符的价值.>你的意思是“如何在二进制数据流中发现数据包的开始”?如果是这样,可以指定数据包之间的最小间隙,和/或要求收件人在每个数据包之后进行确认.>调试更容易,PC上不需要任何特殊软件,但效率不高.当然,如果可用性比效率更重要,那么基于文本的系统是完全合适的.

总结

以上是内存溢出为你收集整理的在嵌入式设备上将C89中的字节流转换为数据包流的方法全部内容,希望文章能够帮你解决在嵌入式设备上将C89中的字节流转换为数据包流的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存