Получить имя устройства, подключенного к последовательному порту
Я ищу, как получить имя устройства для материала, подключенного к последовательному порту.
У меня есть два разных типа материала, которые могут подключаться к нему.
Первый: принтер (только получает данные и ничего не возвращает)
Второй: баланс (только отправлять данные и ничего не получать)
Как я могу различать эти два типа материала?
Спасибо.
Ответы
Ответ 1
Нет единого способа идентификации устройств последовательного порта (UART RS232).
Если у устройств нет специальных команд, которые вы можете отправить на устройство, и ответьте им идентификационную информацию, вы не можете сделать это.
Обычно приложение, которое полагается на последовательный порт, будет иметь стандартный экран настроек, который пользователь будет использовать для настройки последовательного порта, к которому подключено устройство, конфигурации порта для таких вещей, как скорость передачи, бит четности, стоповые биты и биты данных. Если несколько устройств могут быть включены на одном и том же порту, тогда оператор будет отвечать за правильную настройку целевого устройства перед тем, как обмениваться данными с устройством.
Это преимущество новых технологий, таких как USB и т.д., где идентификация устройства встроена в стандарт.
Ответ 2
попробуйте следующее:
ManagementObjectCollection ManObjReturn;
ManagementObjectSearcher ManObjSearch;
ManObjSearch = new ManagementObjectSearcher("Select * from Win32_SerialPort");
ManObjReturn = ManObjSearch.Get();
foreach (ManagementObject ManObj in ManObjReturn)
{
//int s = ManObj.Properties.Count;
//foreach (PropertyData d in ManObj.Properties)
//{
// MessageBox.Show(d.Name);
//}
MessageBox.Show(ManObj["DeviceID"].ToString());
MessageBox.Show(ManObj["PNPDeviceID"].ToString());
MessageBox.Show(ManObj["Name"].ToString());
MessageBox.Show(ManObj["Caption"].ToString());
MessageBox.Show(ManObj["Description"].ToString());
MessageBox.Show(ManObj["ProviderType"].ToString());
MessageBox.Show(ManObj["Status"].ToString());
}
Ответ 3
static void Main(string[] args)
{
ManagementObjectCollection ManObjReturn;
ManagementObjectSearcher ManObjSearch;
ManObjSearch = new ManagementObjectSearcher("Select * from **Win32_ParallelPort**");
ManObjReturn = ManObjSearch.Get();
foreach (ManagementObject ManObj in ManObjReturn)
{
//int s = ManObj.Properties.Count;
//foreach (PropertyData d in ManObj.Properties)
//{
// MessageBox.Show(d.Name);
//}
Console.WriteLine(ManObj["DeviceID"].ToString());
Console.WriteLine(ManObj["PNPDeviceID"].ToString());
Console.WriteLine(ManObj["Name"].ToString());
Console.WriteLine(ManObj["Caption"].ToString());
Console.WriteLine(ManObj["Description"].ToString());
Console.WriteLine(ManObj["ProviderType"].ToString());
Console.WriteLine(ManObj["Status"].ToString());
}
}
http://www.seeques.com/20766280/the-port-name-is-illegal-or-couldnt-be-connected-to-the-device.html
имя порта является незаконным, как это сообщение об ошибке... fio.!