如何以智能方式将UDP客户端消息发送到UDP服务器解析消息

How to send UDP client message in smart way to the UDP server parse the message

我在 PyQT(UDP 客户端)中有一个应用程序,它通过 UDP/IP 向树莓派(UDP 服务器)上的应用程序发送一些参数。

此 Qt 应用程序有几个字段,如 PID 参数、电机速度、传感器预设等。

实际上,UDP 客户端通过从 QT 应用程序中的每个字段获取值并将数据附加到带有分隔符 (',') 的字符串中来发送字符串,始终以相同的顺序。例如,“142.0、10.0、2.0、负、正”。
UDP 服务器接收此消息,拆分消息并将列表的每个项目移动到相应的变量。

有效,但不智能,即使一个参数未更改,也会发送所有参数。

只发送特定参数而不依赖于正确顺序的聪明方法应该是什么?还是只有改变的?

也许在 UDP 消息上封装一些协议?

如果您真的想保持简单并尽量减少对现有代码的更改,您可以为具有未更改值的参数包含空值。例如。如果您有四个参数,那么假设它们都发生了变化,您将发送 142,10,2,negative,positive,但如果只有前两个参数发生变化,您将发送 142,10,,。但是,恕我直言,不鼓励此类临时方案。

你可以使用 json with very short member strings. E.g.{"a":142,"b":10}. You'd have to keep a human-readable mapping between the short string keys and their meaning separate from the data. Since the strings can be any Unicode character, you have quite a way to go before you ran out of single characters to use. Also, Python natively supports json.

如果您不太关心数据包的长度,那么您甚至不需要短成员字符串:使用有意义的字符串让您的数据包自我记录,例如 {"velocity":142,"acceleration":10}