1.WMI: SELECT * FROM Win32_SerialPort
:
ManagementObjectSearcher manObjSearch = new ManagementObjectSearcher("Select * from Win32_SerialPort");
ManagementObjectCollection manObjReturn = manObjSearch.Get();
foreach (ManagementObject manObj in manObjReturn)
{
//int s = manObj.Properties.Count;
//foreach (PropertyData d in manObj.Properties)
//{
// Console.WriteLine(d.Name);
//}
Console.WriteLine(manObj["DeviceID"].ToString());
Console.WriteLine(manObj["Name"].ToString());
Console.WriteLine(manObj["Caption"].ToString());
}
2. Si la réponse périphérique Renvoyez: System.IO.Ports.SerialPort.GetPortNames()
et l'envoi de la commande de base:
foreach (string portname in SerialPort.GetPortNames())
{
var sp = new SerialPort(portname, 4800, Parity.Odd, 8, StopBits.One);
try
{
sp.Open();
sp.Write("Your known command to device");
Thread.Sleep(500);
string received = sp.ReadLine();
if (received == "expected response")
{
Console.WriteLine("device connected to: " + portname);
break;
}
}
catch (Exception)
{
Console.WriteLine("device NOT connected to: " + portname);
}
finally
{
sp.Close();
}
}
La propriété DsrHolding est vraie lorsqu'un périphérique est connecté au port et mis sous tension. Bien sûr, vous n'aurez aucune idée de quel appareil particulier jusqu'à ce que vous commenciez à lui parler. –
"La propriété DsrHolding sera vraie quand un périphérique est connecté" - peut ou non être, en fonction de l'appareil et du câble. – Joe