2010-12-21 62 views
15

我搜索如何获取连接到串行端口的材料的设备名称。获取连接到串行端口的设备名称

我有两种不同类型的材料可以连接它。

第一招:打印机(只接收数据并发送任何回报) 第二个:平衡(仅发送数据和接收无)

我怎么能区分这两种类型的材料?

谢谢。

+0

余额不会定期发送数据,只有当某个事件发生在另一端时) – 2010-12-21 14:10:59

回答

9

没有确定串口(UART RS232)设备的通用方法。

除非设备有特殊的命令,您可以发送到设备并使其以识别信息响应,否则您可以做的事情不多。

通常,依赖串口的应用程序将有一个标准设置屏幕,用户可以使用该屏幕来配置设备连接的串行端口,波特率,奇偶校验位,停止位和数据位等端口配置。如果多个设备可以在同一个端口上切换,则操作员将负责在与设备通信之前选择目标设备的正确配置。

这是诸如USB等新技术的优点,其中器件标识内置于标准中。

+0

我在一个工业项目中,所以USB并没有在任何地方实现... :(你如何管理这个案例? – 2010-12-21 14:07:35

10

试试这个:

 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()); 

     } 
0
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!

相关问题