我们有一台设备使用在Windows 8嵌入式设备上运行的Sierra MC7354调制解调器。我遇到的问题是设备管理器将显示调制解调器的com端口,但是在我们的嵌入式XP系统上工作的代码和运行Windows 7的开发笔记本电脑不能用于我们的8嵌入式构建。
我们目前正在使用WMI搜索调制解调器。用于WMI查询的命名空间是“root \ CimV2”,ClassName是“Win32_POTSModem”。当我们使用ClassName“Win32_NetworkAdaptor”时,我们会看到调制解调器。我们还在搜索“Win32_PnPEntity”时看到三个组合中的两个,而不是我们需要向调制解调器发送“AT”命令的com端口。我们的软件是从管理员CMD窗口运行的,应该避免权限问题。
所需的comport列在SerialPort.GetPortNames中。由于其他串行硬件会因发送查询而受到负面影响,我们无法向每个端口发送AT命令以查找调制解调器。
这是一个简单的测试应用程序,Windows 8嵌入式返回0个调制解调器和15个网络适配器,我的笔记本电脑返回15个调制解调器和43个网络适配器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
namespace wmiModemTest
{
class Program
{
static void Main(string[] args)
{
Modem();
Network();
}
static void Modem()
{
//create a management scope object
ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2");
//create object query
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_POTSModem");
//create object searcher
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, query);
//get a collection of WMI objects
ManagementObjectCollection queryCollection = searcher.Get();
Console.WriteLine("Number of Win32_POTSModem returned: {0}", queryCollection.Count);
//enumerate the collection.
foreach (ManagementObject m in queryCollection)
{
// access properties of the WMI object
Console.WriteLine("Description : {0}", m["Description"]);
}
}
static void Network()
{
//create a management scope object
ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2");
//create object query
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_NetworkAdapter");
//create object searcher
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, query);
//get a collection of WMI objects
ManagementObjectCollection queryCollection = searcher.Get();
Console.WriteLine("Number of Win32_NetworkAdapter returned: {0}", queryCollection.Count);
//enumerate the collection.
foreach (ManagementObject m in queryCollection)
{
// access properties of the WMI object
Console.WriteLine("Description : {0}", m["Description"]);
}
}
}
}
有谁知道如何收集调制解调器的WMI信息或设备管理器如何获取信息?