2012-01-10 20 views
1

USBシリアルアダプタのポート番号を変更する必要があります。次に、portName/COM番号をCOM11に変更する必要があります。 。C#指定されたCOMポートに変更する方法

私はまさにこの必要がありますが、C#のコードによって:

[マイコンピュータ] - > [管理] - > [デバイスマネージャ] - > [ポート] - > [通信ポート] - > [ポート設定 - >詳細設定 - > COMポート番号


 try 
     { 
      ManagementObjectSearcher searcher = 
       new ManagementObjectSearcher("root\\WMI", 
       "SELECT * FROM MSSerial_PortName"); 

      foreach (ManagementObject queryObj in searcher.Get()) 
      { 
       //If the serial port's instance name contains USB 
       //it must be a USB to serial device 
       if (queryObj["InstanceName"].ToString().Contains("USB")) 
       { 
        Console.WriteLine("-----------------------------------"); 
        Console.WriteLine("MSSerial_PortName instance"); 
        Console.WriteLine("-----------------------------------"); 
        Console.WriteLine("InstanceName: {0}", queryObj["InstanceName"]); 
        Console.WriteLine(queryObj["PortName"] + "is a USB to SERIAL adapter/converter"); 
        string port = queryObj["PortName"].ToString(); 
        SerialPort p = new SerialPort(port); 
        //p.PortName = "COM11"; 
        return port ; 
       } 
      } 

      throw new Exception(Messages.PINPAD_NOT_FOUND); 
     } 
+0

p.PortNameをコメントアウトした場所を設定している場合は、コメントを外してp.PortName ..を返そうとしましたか?あなたのメソッドの内部にも戻り値の型は何ですか?あなたは完全なメソッドを表示できますか? – MethodMan

+0

プリンタのポートを変更するなど、このようなことをするときに.Put();があります。メソッドは、p.Put()があるかどうかを確認することができます。ポート番号 – MethodMan

+0

を返す前に、p.PortName = "COM11"は機能しません。 SerialPortには.Put()などのメソッドはありません。設定を更新するためにいくつかのコドーが必要です。 –

答えて

1

comポートの名前変更がwmiで利用できるとは思われません。技術的な観点から、あなたが指し示す構成は、シンボリックリンクをドライバに接続して変更します。私はそれが可能だと思うが、あなたはそれをDDK(おそらくWDM)で見なければならない。

私の知る限り、あなたのプログラムの適切な解決方法は、ハードウェアが割り当てられた名前に適応することです。正しいポート名を設定ファイルまたはレジストリのどこかに格納し、ユーザがカスタマイズできるようにする必要があります。

+0

OK、それは不可能と思われます。シリアルポートマッピングの要件を取り除くために私のソフトウェアが動作する他の会社と話をしなければなりませんでした。彼らはそれをするためにしばらく時間がかかるだろうが、それはそれです –