Windows 8和单元调制解调器com端口信息

时间:2016-11-30 17:11:17

标签: c# windows wmi

我们有一台设备使用在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信息或设备管理器如何获取信息?

0 个答案:

没有答案