現在使用されているシリアルポートを見つける方法は?
質問
私は自分の携帯電話を私の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();
}
}
所属していません StackOverflow