2015-10-13 117 views
0

我正在開發一個以前的工程師開始的項目。基本上,我們使用WiFi模塊將數據從微控制器發送到我們的服務器。試圖瞭解我通過TCP連接發送/接收的UART數據包

這裏是我是如何解釋到目前爲止的代碼:

-The模塊創建一個AP,用戶連接到。
- 用戶然後輸入一個IP/URL,這允許他們選擇他們的WiFi網絡。
- 模塊現在通過選定的網絡進行通信。
- 模塊每秒鐘將一個套接字連接到我們的TCP服務器併發送一個數據包。
- 如果服務器有一個用於客戶端的命令,它用一個命令包進行響應。

我的困惑在這裏試圖理解數據包結構。

客戶端發出的數據包以[ESC] [Z] ['Connection ID'] [0] [0] [0] [6]開始。我假設這與預定義的UART佈局有關,但我以前從未使用過UART。

如果有命令,服務器會以一個也以[ESC] [Z] ['Connection ID'] [0] [0] [0] [6]開頭的數據包作出響應。然而,客戶端隨後以一個數據包作爲響應,該數據包開始[ESC] [Z] ['連接ID'],然後是數據。

那麼什麼是'0006'標題我的數據包,爲什麼這些值不需要在客戶端的響應?我假設'ESC'是發送數據到網絡外部所必需的,'Z'是一個預定義的頭部。不過,如果我錯了,請糾正我!

+0

它可能是一個字節長度?即沒有。數據字節如下。客戶對該命令的迴應看起來像是一個確認。 – user2867342

+0

我真的不知道爲什麼我沒有立即想到,是接下來的代碼是串行#到6個字節。 WiFi模塊的文檔列出了一些UART命令,但沒有解釋數據,這就是爲什麼我被拋棄的原因。非常感謝你! – user3693406

回答

0

頭中的數字就是頭字節後數據包中留下的字節數。 > <

+0

嘿!這是我的答案;-) – user2867342