我想了解如何获取连接到串口的设备名称。
我有两种不同类型的设备可以连接它:
第一种: 打印机(仅接收数据,不发送任何内容) 第二种:天平(只发送数据,不接收任何内容)
我如何区分这两种类型的设备?
谢谢。
我想了解如何获取连接到串口的设备名称。
我有两种不同类型的设备可以连接它:
第一种: 打印机(仅接收数据,不发送任何内容) 第二种:天平(只发送数据,不接收任何内容)
我如何区分这两种类型的设备?
谢谢。
试试这个:
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等)的优点,其中设备识别已内置于标准中。
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";
}
}
}
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.!
private void RetrieveDeviceInfo()
{
Process proc1 = null;
try
{
proc1 = new Process();
proc1.StartInfo = new ProcessStartInfo();
proc1.StartInfo.FileName = this.DevConExeFile;
proc1.StartInfo.Arguments = "hwids =ports";
//proc1.StartInfo.RedirectStandardInput = true;
proc1.StartInfo.RedirectStandardOutput = true;
proc1.StartInfo.UseShellExecute = false;
proc1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc1.StartInfo.CreateNoWindow = true;
proc1.Start();
proc1.WaitForExit(1000);
string AllOutput = proc1.StandardOutput.ReadToEnd();
this.LastOutput = AllOutput;
}
catch(Exception em1)
{
throw em1;
}
finally
{
try
{
proc1.Kill();
}
catch
{
}
}
}