私のシナリオでは、RS232 接続を介して PC にシリアル データを送信する 4 つのデバイスがあります。また、ハードウェアを使用して 4 つのデータ ストリームすべてを 1 つの USB 接続にまとめています。
さて、このセットアップでは Windows に 4 つの COM ポートが作成されます。これが私の問題です。なぜなら、私は1 つのシリアル ポートから読み取る既製のソフトウェアを持っているからです。
4 つの RS232 シリアル ポートからパケットを取得し、ストリームを 1 つのシリアル ポートに転送する小さな C++ ソフトウェアを作成しようとしています。パケットを交互にすると確実に機能します。これまでのところ、シリアル化されたストリームを書き込むための仮想シリアル ポートを作成し、既製のソフトウェアがそこから読み取れるようにする必要があります。今はこれをテストしていませんが、シリアル化されたデータを書き込むためにポートを開いたままにして、既製のソフトウェアで開いて読み取ることができないため、ブリッジなどなしではこれを行うことができないと思いますデータ。
そのとき私がすることは
- 仮想ポートのセットアップ
- その仮想ポートへのブリッジをセットアップします
- 仮想ポートのコピーから読み取るように既製のソフトウェアを設定します
- 私の C++ ソフトウェアで、4 つのポートと仮想ポートを開きます。
- 自分のものを仮想ポートに書き込みます(COMport_TARGETの下を参照)
私の質問
以下のコード例を考えると、
- あなたも同じようにしますか?
- 他にどのようにしますか?
- 仮想ポートとブリッジをセットアップするには、どのソフトウェアを使用しますか?
これを行う単純なコードを次に示します。
unsigned char receiveBuffer[PACKET_LENGTH];
OpenCOMPort(COMport_A);
OpenCOMPort(COMport_B);
OpenCOMPort(COMport_C);
OpenCOMPort(COMport_D);
OpenCOMPort(COMport_TARGET); // This is the virtual COM Port to write to
while(true) {
packetReadFromDevice(COMport_A);
packetWriteToDevice(*(receiveBuffer), COMport_TARGET); // Write COM A data
packetReadFromDevice(COMport_B);
packetWriteToDevice(*(receiveBuffer), COMport_TARGET); // Write COM B data
packetReadFromDevice(COMport_C);
packetWriteToDevice(*(receiveBuffer), COMport_TARGET); // Write COM C data
packetReadFromDevice(COMport_D);
packetWriteToDevice(*(receiveBuffer), COMport_TARGET); // Write COM D data
if(somethingHappens)
break;
}
closeCOMPort(COMport_A);
closeCOMPort(COMport_B);
closeCOMPort(COMport_C);
closeCOMPort(COMport_D);
closeCOMPort(COMport_TARGET);