2010-11-26 49 views
1

我有一個客戶端服務器程序使用USB Android手機進行通信的PC,基於http://www.anothem.net/archives/2010/10/15/android-usb-connection-to-pc/協議設計

現在我需要設計有助於從PC到手機的信息交換的協議。我應該怎麼做呢?我們應該使用XML嗎?我正在尋找谷歌協議緩衝區..這是正確的方向?

感謝 卡羅琳

+1

你想運輸的數據有多複雜?你希望別人也使用你的協議嗎? – Knubo 2010-11-26 06:58:16

+0

這些數據可能是點擊,觸摸等命令......我想的更多的是針對這個應用程序的協議..所以我不確定它是否對其他人有用。 – Carl 2010-11-26 07:45:20

回答

3

您需要先設計你的協議的更高層。 Xml和協議緩衝區與數據的格式有關。根據您需要交換的數據,它們可能不適合。從你評論的方式來看,你似乎想爲PC開發一些類似遙控器的東西。在這種情況下,XML和Google協議緩衝區都將是過度設計。只需創建一個文本協議,爲命令類型分配一個或兩個字節,爲數據主體分配一些字節。

看一看的AT commands結構。 HDLC框架的結構也可以給你一些想法。這有一些東西,如錯誤檢查,你不需要,但除了一個簡單的文本協議將使用類似的領域。

4

我一直在Android上使用協議緩衝區。我避免了很長時間,推理它是過度的。那是我花了半天的時間才嘗試出來的。

這是我花了一個下午後的結果。起初,它將我的APK大小從2.89megs增加到3.1 megs。我認爲這是無關緊要的。然後,我發現我能夠刪除我在各地的代碼,我一直在手動進行解析。我能夠刪除需要數據以特定順序進入的代碼。

然後我就能夠完全刪除幾節課我在我的應用程序,其目的是作爲臨時的,輕量級的信息只有「模式」即表示的數據來或從數據流類。總之,它開始讓事情變得更容易,更小,更可靠。

Protocol Buffers的可能是不適合自己情況的最好的事情。但我建議你花幾個小時試試看。這樣你就會做出決定,將自己置身於一個有力量和知識的位置。

請務必使用lite版本的協議緩衝區。 .jar文件是160k,但它帶來的功能量非常大。我會一直使用它從這裏出來。

我做的遊戲情境長期使用時,它具有動態內存分配/垃圾收集一些顧慮。但是現在序列化發生的頻率不夠,對我來說這不是問題。

另一個好處:我有一個生成數據文件,該應用程序讀取一些Python代碼。該python代碼處理一些XML,然後生成二進制文件。我想我可以通過使用協議緩衝區的文本模式完全消除該代碼,然後直接使用protoc創建二進制文件。