我完成了许多项目,其中包括 PC 和 arduino/PLC/某种其他微 Controller /处理器,在每个项目中,我们都有不同的协议(protocol)用于 PC 应用程序和嵌入式应用程序之间的通信。通常,硬件/ Controller 开发人员会发明一个简单的协议(protocol),该协议(protocol)在整个项目中始终会发生变化,并采用以下形式:
Barker | Size | Data | Checksum
这次我要实现双方,所以我想 - 这已经被做过一百万次了。这些东西必须有一个基本协议(protocol),并用 C、C#、Java 等实现。 我正在寻找一个轻量级层,它将基于流的串行通信传输为基于消息的通信。
我已经四处寻找了一段时间,但我自己找不到任何东西。 你碰巧认识一个吗?
最佳答案
我对最近的一个项目有完全相同的要求,但我发现对于低端 8 位微 Controller 来说没有什么足够简单的。因此,我设计了 MIN(微 Controller 互连网络)来完成这项工作(受到 CAN 和 LIN 的启发)。
代码位于 github 上:https://github.com/min-protocol/min (查看那里的维基)。
我定义了第 0 层(UART 设置)和第 1 层(帧层,带有校验和等)以及 C API。
我还在研究一个更高的层,它正式定义如何打包传感器数据(温度、压力、电压等),并使用 JSON 表示形式和自动生成嵌入代码以从帧中打包/解包它们的工具。最终目标是创建一个 Wireshark 解析器,它可以夹在串行线上,并且在输入 JSON 时将以人类可读的形式显示信号。
我写了一篇博客文章,展示了在 Arduino 板上运行的 Hello World 应用程序(使用 FTDI UART-USB 分线板将数据传送到我的主机 PC):
https://kentindell.wordpress.com/2015/02/18/micrcontroller-interconnect-network-min-version-1-0/
这个系列问题经常发生,如果我们作为一个社区能够解决这个问题,而不是为每个项目都重新编码,那就太好了。
关于c - 两个软件实体(Uart/I2C/等)之间串行通信的简单实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29385342/