【发布时间】:2010-12-21 14:00:22
【问题描述】:
我搜索如何获取串口连接的素材的设备名称。
我有两种不同类型的材料可以连接在上面。
第一个:打印机(只接收数据不发回) 第二个:余额(只发送数据,不接收)
如何区分这两种材料?
谢谢。
【问题讨论】:
-
Balance 不会定期发送数据,只有在另一端发生某些事件时才会发送数据;)
标签: c# serial-port
我搜索如何获取串口连接的素材的设备名称。
我有两种不同类型的材料可以连接在上面。
第一个:打印机(只接收数据不发回) 第二个:余额(只发送数据,不接收)
如何区分这两种材料?
谢谢。
【问题讨论】:
标签: c# serial-port
试试这个:
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());
}
【讨论】:
没有通用的方法来识别串口 (UART RS232) 设备。
除非设备有特殊的命令,您可以发送到设备并让它响应识别信息,否则您无能为力。
通常依赖串行端口的应用程序将有一个标准设置屏幕,用户将使用该屏幕来配置设备所连接的串行端口、波特率、奇偶校验位、停止位和数据位等端口配置。如果可以在同一个端口上切换多个设备,则操作员将负责在与设备通信之前为目标设备选择正确的配置。
这是 USB 等新技术的优势,其中设备标识内置于标准中。
【讨论】:
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.!
【讨论】:
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";
}
}
}
【讨论】: