c - 解析不同长度的串行消息
问题描述
我并没有将其作为工作委托给任何人,而只是想要一些想法/帮助来实现我正在研究的消息协议的解析器。我有一条通过串行 com 端口发送的消息,所以基本上只是一个简单的字节集合。
+--------------------------------------------------------------+
| MSG HEADER (5 Bytes) | ----- DATA BYTES (varied count) ----- |
+--------------------------------------------------------------+
此消息的标头具有固定的起始五个字节,表示:
字节 1:固定标头符号 0x81
字节 2:固定标头符号 0xFF
字节 3:数据字数
字节 4:消息 ID
字节 5:标头校验和
然后在此之后,我们收到数据字节。问题是数据字节的数量可能不同,但是这些字节的数量在消息的标题中提到,它是第三个字节。我怎样才能编写一个高效的解析器,它应该能够:
- 在变量中分别收集消息头的第 3、4 和 5 个字节
- 然后根据数据计数,即报文头字节3,轮询串口,直到收到那么多字节
- 收到所有字节后,即收到完整消息时,应表示COMPLETION(可能只是表示一个标志)
解决方案
推荐阅读
- python - 即使我的路径设置正确,Python 也无法在 SublimeText 3 中工作。我应该怎么办?
- daml - 在快速入门指南中运行 Maven 时遇到问题
- linux - 获取 bash 中最后一个 grep 匹配的行
- r - “支配树的根顶点 ID 无效”在 IGraph 包中使用 st_cuts 时出错
- mysql - MySQL错误1194和错误145有什么区别
- typo3 - TYPO3 TCA 默认文本多行/文本区域
- java - 从 Java 访问 Pervasive/Btrieve DB(DDF + DAT 文件)
- sql-server - SSRS 报告中定义的表达式显示#ERROR
- windows - 如何为文件操作设置 Echo 开/关
- tensorflow - 有没有办法设置 per_process_gpu_memory_fraction tensorflow.js (.JS!)?