我在API模式下使用XBee Digimesh模塊在不同的工業機器之間發送數據,允許它們共享數據,信息和命令。爲XBee開發通信協議
的API模式提供了一些基本的命令,主要執行尋址和爲了做配置與所述的XBee模塊本身交談,等等
發送用戶數據經由相應的XBee API-命令,它允許進行發送最大有效載荷爲72字節的用戶定義數據。
因爲我想擴大這種溝通以允許整合更多的機器等。我正在考慮如何實現一個基本的通信系統,它完全適合於72字節的超小型有效載荷。
來自網絡,我通常會在這裏使用某種JSON,但這會很快填滿有效載荷。
另外它不可能發送很多信息的幀,因爲這也會很快填滿有效載荷。
所以我想出了一種不同的溝通方式。相反發射擠滿了信息幀,何談發送某種消息這樣的:
- 機-A廣播:誰在那兒?
- 機-B回答:這是我,我是一個XXX-機
- 機-C回答:這是我,我是一個XXX-機
機-A現在計算的答覆,並決定一起工作Machine-B(因爲Machine-C與As接口不匹配):
- Machine-A to B:Hello B,請給我一些價值,請!
- 機B到A:你去那裏:2.349590
這可以擴展到不同的短消息。在每條消息之後,發件人將消息的類型保存在一個狀態中,並且將根據狀態/上下文評估回覆。
我試圖避免的是定義一個基於位的協議(如MIDI),它將所有事件定義爲基於位的標誌。由於我們現在不會在未來添加什麼類型的硬件,我想要一個非常靈活的通信協議,並且不需要協調器或消息代理等。
但是由於這是我第一次思考關於通信協議我很想知道是否有一些現有的框架可以處理輕載荷上的複雜通信。