[英]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與非常短的成員字符串一起使用。 例如{"a":142,"b":10}
。 您必須在短字符串鍵及其含義之間保持人類可讀的映射,並將它們與數據分開。 由於字符串可以是任何 Unicode 字符,因此在用完單個字符之前,您還有很長的路要走。 此外,Python本身支持 json 。
如果您不太關心數據包的長度,那么您甚至不需要短成員字符串:通過使用有意義的字符串,例如{"velocity":142,"acceleration":10}
使您的數據包自我記錄{"velocity":142,"acceleration":10}
.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.