Получить имя устройства, подключенного к последовательному порту

Я ищу, как получить имя устройства для материала, подключенного к последовательному порту.

У меня есть два разных типа материала, которые могут подключаться к нему.

Первый: принтер (только получает данные и ничего не возвращает) Второй: баланс (только отправлять данные и ничего не получать)

Как я могу различать эти два типа материала?

Спасибо.

Ответы

Ответ 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.!