0

Windows COM ポートは、プロセス間通信のために同じ PC で実行されている 2 つのプログラムで使用できますか? 私たちの最終的な目標は、COM ポートを介して通信してハードウェアを制御するプログラムを作成することです。ハードウェアが利用できないため、仮想 COM ポートから読み取って応答するプログラムでハードウェアをエミュレートしたいと考えています。

単純なエミュレーターは、COM ポートからバイトが読み取られるのを待機し、COM ポートに書き込むことによって応答するプログラムです。まず、これらのメッセージの値をハードコーディングできます。

だから私は、ファイルを読み書きするためにWindowsによって与えられた関数を使用してReadFile、C / C ++で書かれた2つのプログラムを持っています。WriteFileアクセス競合のため、このアプローチは機能しません。したがって、エミュレータ自体に対する私たちのアプローチが間違っているのではないかと考えていました。

他の分野でのプログラミング経験はありますが、Windows ベースのプログラミングは初めてです。どんな助けでも大歓迎です。

アップデート:

解決:

  • Eltima Software の Virtual Serial Port Driver 7.1 (試用版) をインストール
  • 仮想ポートのペアを追加 (COM1 と COM2 など)
  • コントローラ プログラムは、COM1 を介して通信します。
  • エミュレータ プログラムは COM2 を介して通信します。
  • Eltima ソフトウェアが 2 つのポート間のデータ転送を処理します
4

1 に答える 1

2

両方のプロセスが読み取り/書き込みできる共有パラメーターを使用してファイルを開くことができます。しかし、これは良い解決策ではありません。なぜなら、シリアル ポートの読み書きには、ファイルの読み書きと多くの違いがあるからです。

代わりに、仮想 COM ポート ドライバー (com0com.sourceforge.net など) を入手することをお勧めします。それをインストールして、2 つの COM ポートを作成し、それらを仮想的に接続します。そうすれば、プログラムが実際の COM ポートでも動作することを確認できます。

その解決策が受け入れられない場合は、ファイルではなくパイプの使用を検討してください

于 2012-04-21T15:29:02.833 に答える