我在PyQT(UDP客户端)中有一个应用程序,它通过UDP / IP将一些参数发送到raspberry(UDP服务器)上的应用程序。
这个Qt应用程序有几个字段,如PID参数,电机速度,传感器预设等。
实际上,UDP客户端通过从QT应用程序中的每个字段获取值并使用分隔符(',')将数据附加到字符串中来发送字符串,始终采用相同的顺序。例如,“142.0,10.0,2.0,负面,正面” UDP服务器接收此消息,拆分消息并将列表中的每个项目移动到相应的变量。
虽然有效,但它并不聪明,即使参数未更改,也会发送所有参数。
什么应该是仅发送特定参数的智能方式,而不是依赖于正确的序列?还是只改变了?
也许有些封装协议通过UDP消息?
答案 0 :(得分:1)
如果您真的想保持简单并且最少更改现有代码,则可以为参数添加空值,其值不会发生变化。例如。如果你有四个参数,那么假设它们全部改变了你发送142,10,2,negative,positive
,但如果只改变了前两个参数,你就发送142,10,,
。但是,这种临时方案应该是恕我直言。
您可以将json与非常短的成员字符串一起使用。 E.g。{"a":142,"b":10}
。您必须在短字符串键和它们与数据分开的含义之间保持人类可读的映射。由于字符串可以是任何Unicode字符,因此在用完单个字符之前还有很长的路要走。另外,Python natively supports json。
如果您不太关心数据包的长度,那么您甚至不需要简短的成员字符串:使用有意义的字符串(例如{"velocity":142,"acceleration":10}
)使您的数据包自我记录