携帯電話をPCにつないで使っていたのですが、
string[] lPorts = System.IO.Ports.SerialPort.GetPortNames();
結果はポート名の配列でした
"COM4"
"COM3"
"COM1"
"COM7"
"COM6"
さて、どのシリアルポートが現在使用されているか/私の携帯電話がどのポートにc#で接続されているかを見つける方法は?
明らかに、通信に使用されているシリアル プロトコルを知る必要があります。既知のコマンドを各ポートに送信し、期待される応答を確認するだけです。デバイスが搭載されていないポートは、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();
}
}