2016-11-30 3 views
1

私は、ディスクリートパケットの形で通信するシリアルデバイス用のドライバを作成しています。また、シリアルトラフィックのダンプファイルからパケットを解釈できるようにしたいと思います。私は将来同様の他のドライバを書くつもりです。規格を使用したパケットストリームの適切な実装

利用可能なライブラリと標準を調べたところ、iostreamがワイド文字に変換するために使用するstd :: codecvtを実装することを考えていました。バイトストリームとパケットストリームを変換する方法を提供していますシリアルポートがバイトの標準ストリームであるように、オブジェクトを処理し、asioを処理します。

これは、標準を最大限に活用した、私にとって最もエレガントなアプローチのようでしたが、私はそれがコーデックの悪用であることを心配しています。 codecvtのためのドキュメントを読むことは、文字エンコーディングのみを変換することを明確に意図しています。しかし、より高いレベルのパケットオブジェクトでうまくいくように見えます。

より高度なデータに対応するために、使い慣れた挿入演算子と抽出演算子を使用することが魅力的です。このアプローチは、これを達成するための最小限の定型コードが必要であることを意味します。

このアイデアはコーデックの誤用ですか?あなたの経験豊富な意見では、ここで「正しい」または「最良の」解決策は何ですか?

答えて

0

データ型とデータ型のバイトストリームをバイトストリームに変換するために、AsioとBoost.Spiritをペアにします。

私たちはあまりに頻繁にそれを使用し、Qi/Karma文法と、async_read_someで使用できるAsioタイプを取ることができる汎用パケッタイザーライブラリにその概念を抽象化しました。

シリアルポート、TCP/IPソケット、およびカスタマイズされたIOでこれを使用します。

関連する問題