「COM PORT IN USE」エラーを発生させずにこれを行う方法はありますか? com ポートで gps GPRMC センテンスをリッスンするサービスがあります。しかし、テスト用コンピューターにはこのデバイスがありません。そのため、他の Python スクリプトが同じポートをリッスンして解析している間に、ポートで GPRMC 文をシミュレートする Python スクリプトを作成したいと考えました。
1 に答える
シリアル ポートへの書き込みは、同じデバイスによって読み取られるシリアル ポートにメッセージを残しません。これは、シリアル ポートの動作方法ではなく、ほとんどの OS がバッファ動作として許可するように記述されている方法でもありません。本当に必要なのは、仮想シリアル ポートです。
COM ポート リダイレクタに関するウィキペディアの記事のこのセクションをチェックして、いずれかがニーズを満たすかどうかを確認してください。それ以外の場合は、ユース ケースとオペレーティング システムで動作するソフトウェアが見つかるまで、COM ポート エミュレーター、シリアル ポート仮想化などを検索することをお勧めします。特にタイミングがシミュレーションにとって重要な場合、これは難しいかもしれません。
編集:これをもう少し明確にするために、pySerialライブラリが実際にpythonと通信するために何をしているのかについて話しましょう。pySerial は、シリアル ポート用の OS の API と通信しているだけです。一般に、OS はこれを、情報を書き込む場所と読み取る場所としてモデル化します (最新のほぼすべてのコンピューティング システムでバッファリングされます)。理解しておくべき重要なことは、OS の観点 (シリアル ポートがどのようにモデル化されているか) から、書き込み場所は書き込みのみが可能で、読み取り場所は読み取りのみが可能であるということです。これは、実際のシリアル ハードウェアがマシンとインターフェイスする方法である場合とそうでない場合があります。これまでに使用したほとんどのシリアル ポート ハードウェアとインターフェイスの設計では、単純さとコスト削減のためのケースです。このため、
OSに、何らかの方法で読み書きできる仮想シリアルポートを提供します
もっと簡単な方法として、コンピュータのシリアル ポートの 1 つにヌル モデム アダプタを接続し、シリアル ケーブルを使用して 2 つのポートを接続します。これで、一方のポートでサービスを使用し、もう一方のポートでシミュレートされたデバイス スクリプトを使用できるようになりました。