シリアル ポート経由でデバイスに接続するユーティリティがあります。このアプリケーションをテストするために、デバイス用のシミュレーターを作成しています。
どちらのアプリケーションも、同じ Windows 7 マシンで実行することを目的としています。
私はC#でシミュレーターを書いています。com0com を使用して、仮想ポートのペアを作成しました (この場合、既存のペアがいくつかあるため、CNCA8 と CNCB8 です)。
シミュレーターで CNCB8 を開こうとしています (アプリケーションはまだ実行されていません)。例外が発生します。
System.dll で 'System.ArgumentException' 型の未処理の例外が発生しました
追加情報: 指定されたポート名が COM/com で始まっていないか、有効なシリアル ポートに解決されません。
サンプルコード:
SerialPort port = new SerialPort("CNCB8", 9600, Parity.None, 8, StopBits.One);
port.Handshake = Handshake.None;
port.Open();
未使用の仮想ポートであるため、この質問は関係ありません (IsOpen は問題がある場合は false を返します): C# SerialPort#Open() メソッドは、ポート名のために ArgumentException をスローしますか?
編集:ポート名が SerialPort.GetPortNames() に表示され、Windows のデバイス マネージャーの「com0com シリアル ポート エミュレーター」の下に表示されることも確認しました。また、B の代わりに CNCA を使用して (いくつかの異なる既存の仮想ポートを使用して)、「HandShake」行を削除して、念のためにボーレートを 115200 に変更してみました (ただし、最終的には 9600 が必要です)。