4

かなり単純なネットワーク プロトコルを実装する必要があります: マイクロコントローラー (言語は C) と Java アプリケーションを備えたデバイスがあり、通信する必要があります: ファームウェアの更新を実装する必要があります。

少なくとも、いくつかのデータ構造をヘッダーとして送信する必要があります。

醜い方法だけが思い浮かびます:

C 側でパック構造を宣言し、Java 側で同じデータ フローを何とか処理できます。したがって、構造が変更された場合は、C と Java の両方で変更を加える必要があります。私はこれが大嫌いです。

それを行うためのより良い方法はありますか?たぶん、次のようなものです: プロトコル構造を特別な形式で記述し、C および Java 側のコードを生成できるユーティリティを用意する必要があります。

または、多分、何か違う。

提案をお待ちしております。

4

3 に答える 3

3

JSON などのデータ転送に標準化された表記法を使用することを検討することをお勧めします。c での JSON の解析に関する情報を次に示します。

C を使用した JSON の解析

それが私のプロジェクトであれば、おそらくパックされたデータ構造だけを使用するでしょう。プロジェクトが成熟したら、データ構造への変更が最小限に抑えられ、メジャー リリース時にのみ発生することを願っています。必要に応じて、データ構造にバージョン タグを保持して、従来のデータ形式を処理できます。

于 2013-05-12T17:16:07.690 に答える
3

この問題の一般的な解決策の 1 つは、Google のprotobufを使用することです。ただし、マイクロコントローラー環境で動作する必要があると指定したため、 protobufの純粋な C バージョンであるprotobuf-cを調べることができると思います。

于 2013-05-12T17:54:39.607 に答える
0

プロトコルの詳細を教えてください。ステートフルかステートレスか? プロトコルがステートレスの場合は、Web サービス (特に REST-WS) に注目してください。これは、よく知られたクロスプラットフォーム コミュニケーションの実践です。

于 2013-05-12T17:16:59.803 に答える