我正在尝试执行在wiki Workflows中定义和描述的相同的协议
我的工具集是用于嵌入式系统的Protobuf : Nanopb。使用串口的STM32F7。
我现在正试图在PC和STM32F7之间进行通信,通常通信将在两个STM32F7板之间进行。
我的问题:
发布于 2019-07-22 23:46:20
首先,AFAIK,纳米粒子并不支持Protobuf模式语言的全部可能性。因此,您需要一个对纳米粒子有效的模式,希望它能够满足需求。但是,(据我所知)非常有用的oneof
不起作用,这可能很烦人。
其次,protobuf线格式不是自定界。因此,您将在串行电缆上喷射数据,但不可能可靠地(如果有的话)指出一条消息的结束位置和另一条消息的启动位置。因此,您将需要传输某种类型的消息间同步模式的字节,选择不太可能遇到的消息。您必须读取同步模式之间的字节,将它们放置在缓冲区中,并从中进行解析。
第三,如果您发送了各种不同的消息,并且不能使用oneof
,那么您将需要一些其他的方法来识别消息的类型,这样就可以将其解析为正确的对象类型。这种“方式”可以是一个固定的消息类型序列,或者是一个值标识消息类型的字节,或者是一个在所有消息中执行相同任务的字段。oneof
很有吸引力(尽管您无法使用),因为它可以用作各种不同消息类型的载体;您只需使用oneof
的解析器来解析接收到的数据。
https://stackoverflow.com/questions/57045483
复制相似问题