Obter o nome do dispositivo conectado à porta serial

Eu pesquiso como obter o nome do dispositivo do material conectado à porta serial.

Eu tenho dois tipos diferentes de material que podem se conectar nele.

Primeiro um: uma impressora (só recebe dados e não envia nada de volta) Segundo um: um saldo (só envia dados e não recebe nada)

Como posso distinguir esses dois tipos de material?

Obrigado.

Não existe uma maneira universal de identificar dispositivos de porta serial (UART RS232).

A menos que os dispositivos tenham comandos especiais que você possa enviar para o dispositivo e que ele responda com informações de identificação, não há muito o que fazer.

Normalmente, a aplicação que depende da porta serial terá uma canvas de configuração padrão que o usuário usaria para configurar a porta serial à qual o dispositivo está conectado, configuração de porta para dados como taxa de transmissão, bits de paridade, bits de parada e bits de dados. Se vários dispositivos puderem ser ligados na mesma porta, o operador será responsável por selecionar a configuração correta para o dispositivo de destino antes de se comunicar com o dispositivo.

Esta é a vantagem das tecnologias mais recentes, como USB, etc., onde a identificação do dispositivo é incorporada ao padrão.

tente isto:

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()); } 
 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-ou-couldnt-be-connected-to-the-device.html

o nome da porta é ilegal como é uma mensagem de erro assim … fio.!

 Class1 UD = new Class1(); { string strUserAgent = Request.UserAgent.ToLower(); if (strUserAgent != null) { string Browser = Request.Browser.Browser; string a = Request.Browser.MobileDeviceManufacturer; string b = Request.Browser.MobileDeviceModel; string c = Request.Browser.Platform; string d = Request.Browser.Type; string e = Request.Browser.Version; UD.Browser = Browser; UD.MobileDeviceModel = b; UD.MobileDeviceManufacturer = a; UD.Platform2 = c; UD.Type = d; UD.Version2 = e; if (Request.Browser.IsMobileDevice == true || strUserAgent.Contains("iphone") || strUserAgent.Contains("blackberry") || strUserAgent.Contains("mobile") || strUserAgent.Contains("windows ce") || strUserAgent.Contains("opera mini") || strUserAgent.Contains("palm")) { UD.deviceType = "Request from Mobile Device"; } else { UD.deviceType = "Request from Computer"; } } }