リソースを消費せずにシリアルポートからデータを読み取るには?

リソースを消費せずにシリアルポートからデータを読み取るには?

私たちの上司は、自分が使用するプログラムの監視アプリケーションを作成する必要があります。彼らのビジネスニーズのために私はできます。いいえすべてのタイプの仮想シリアルポートを使用します。 /dev/ttyUSB0、アプリケーションに入って来るデータ〜しなければならない/dev/ttyUSB0に接続します。

私は、データ転送を中断することなくシリアルポートに入ったり出たりすることができるように、socatによって作成された仮想シリアルポートを利用する設計について議論しました。しかし、デザインは拒否されました。彼は、WindowsでPuttyのようにリソースを消費せずに「ポートミラーリング」または「情報を読む」という方法でこれを行うことを提案しました。

どうすればよいのか、この問題をどのように解決するのかわかりません。

ベストアンサー1

最も簡単な方法は、おそらくハードウェアで監視を実行することです。しかし、ソフトウェアでは、ttyの名前をptyに変更できると思います! /devファイル名は魔法ではありません。これはドライバを番号と呼ぶフレンドリーな方法です。 Pty(またはUnixドメインソケット)を作成し、実際のtty(/ dev / ttyUSB0)の名前を変更し、新しい/dev/magicserialエンドポイントの名前を実際のttyの名前に変更します。その後、あなたは完全に制御することができます! Magicserialとエンドポイント間のすべてのデータをコピーするループを実行するデーモンを作成するselect と、必要なものすべてを監視できます。簡単ではありませんが、うまくいくはずです。

これはPtyチュートリアルの例

おすすめ記事