1

携帯電話をPCにつないで使っていたのですが、

string[] lPorts = System.IO.Ports.SerialPort.GetPortNames();

結果はポート名の配列でした

"COM4"
"COM3"
"COM1"
"COM7"
"COM6"

さて、どのシリアルポートが現在使用されているか/私の携帯電話がどのポートにc#で接続されているかを見つける方法は?

4

1 に答える 1

4

明らかに、通信に使用されているシリアル プロトコルを知る必要があります。既知のコマンドを各ポートに送信し、期待される応答を確認するだけです。デバイスが搭載されていないポートは、IOException をタイムアウト/スローします。

または、コードでこれを行いたくない場合は、HyperTerminal または別のシリアル ターミナル プログラムを使用して同じことを試すことができます。

次のようなことを試してください: (私はメモリからこれを書いていることに注意してください。これがコンパイルされることを保証するものではありません/メソッド名が 100% 正しいことを保証するものではありませんが、一般的なアイデアは得られます)。

foreach(string portname in SerialPort.GetPortNames())
{
    // Use your connection settings - own baud rate etc
    SerialPort sp = new SerialPort(portname,4800, Parity.Odd, 8, StopBits.One); 
    try
    {
         sp.Open();
         sp.Write("Your known command to phone");
         Thread.Sleep(500);
         string received = sp.ReadLine();

         if(received == "expected response")
         {
              Console.WriteLine("Phone connected to: " + portname);
              break;
         }
    }
    catch(Exception)
    {
         Console.WriteLine("Phone NOT connected to: " + portname);
    }
    finally
    {
         sp.Close();
    }
}
于 2010-05-30T11:53:42.907 に答える