さまざまなプロジェクト用にいくつかの異なるカスタムシリアルプロトコルを作成した後、私は毎回車輪の再発明に不満を感じ始めました。すべてのプロジェクトのカスタムソリューションを開発し続ける代わりに、私はより一般的なソリューションを探していました。次の要件を満たすシリアルプロトコル(またはさらに良いのは実装)を誰かが知っているかどうか疑問に思いました。
速度はそれほど問題ではありません。他のニーズのいくつかを満たすために、速度をあきらめるつもりです。ただし、必要なリソースの量を最小限に抑えたいと考えています。
ピギーバックされたACKを使用し、選択的な繰り返しを行わずにスライディングウィンドウプロトコルの実装を開始しようとしていますが、おそらく誰かが私に問題を解決できると考えました。私が活用できる既存のプロジェクトを知っている人はいますか?それとももっと良い戦略?
[〜#〜]更新[〜#〜]
TCP/IPの実装を真剣に検討しましたが、もっと軽量なものを本当に望んでいました。 TCP/IPの機能の多くは、私がやろうとしていることに対してやり過ぎです。おそらく私が欲しい機能がより軽いプロトコルに含まれていないことを(しぶしぶ)受け入れたいと思います。
UPDATE 2
CANに関するヒントをありがとう。私は過去にそれを見たことがあり、おそらく将来それを使用するでしょう。ただし、確認応答、バッファリング、再試行などをライブラリで処理することを本当に望んでいます。データリンク/物理層ではなく、ネットワーク/トランスポート層を探していると思います。
UPDATE 3
つまり、この分野の最先端技術は次のように思えます。
この質問に出くわした場合は、遠慮なく回答を投稿してください。
[〜#〜] hdlc [〜#〜] または [〜#〜] sdlc [〜#〜] を検討しましたか?
LAP/D (Link Access Protocol、D-Channel)もあります。
UylessBlackの " Data Link Protocols "は常に私の本棚の近くにあります-そこにもいくつかの有用な資料が見つかるかもしれません(目次を熟読してさまざまなプロトコルを調べても)
[〜#〜] can [〜#〜] いくつかの基準を満たしています:
前述のように、その定義はかなり低レベルであるため、ニーズを満たすために完全なプロトコルに変換するために行う必要のある作業がまだあります。ただし、多くの作業がハードウェアで行われるという事実は、さまざまなアプリケーションに非常に役立ちます。
妥当な出発点は IP だと思います。
(追加 µIPに関するウィキペディアの記事 元のリンクが無効になっているため。)
MODBUSプロトコルを検討しますか?マスター/スレーブ指向であるため、スレーブは転送を開始できませんでしたが、それ以外の場合は実装が軽量で、無料で、高レベルのツールで十分にサポートされています。保持レジスタ、入力レジスタ、出力コイルなどの用語を理解する必要があります。
Phyレベルは、RS232、RS485、イーサネットなどです。
マイクロコントローラーインターネットネットワーク(MIN)をご覧ください。
https://github.com/min-protocol/min
CANに触発されていますが、標準のUARTハードウェアを使用しており、フレッチャーのチェックサムとフレーム形式がエラー検出をチェックし、バイトスタッフがフレームヘッダーをマークしています。