使用 C# 检测 USB 调制解调器设备






4.17/5 (9投票s)
使用 C#.NET 检测 USB 调制解调器设备
引言
本示例演示了使用 C# 与 USB 调制解调器通信。它检测并列出 USB 调制解调器连接的端口,使用 AT 命令与 USB 调制解调器通信,并检索 USB 设备的的基本信息。您可以使用 WMI 代码生成器工具生成 VBScript、C# 和 VB.NET 中的 WMI 查询脚本。
要下载 WMI,请点击 此处。
示例截图
示例中使用的命令
以下是本示例中使用的命令:
- AT+CGMM
获取 USB 型号标识
产品名称:EC122
输入:AT+CGMM
输出:EC122 - AT+CGMR:获取调制解调器的固件版本
- AT+CGSN:获取调制解调器的 IMEI
- AT+CIMI:获取 IMSI 号码
- AT+CGMI:获取 USB 型号的制造商
- AT:获取调制解调器的注意
代码段
- 检测并列出 USB 调制解调器连接的端口名称。这里,我们使用 WMI 查询来获取 USB 调制解调器连接的端口名称。
ManagementObjectSearcher searcher = new ManagementObjectSearcher ("root\\CIMV2", "SELECT * FROM Win32_PnpEntity "); ManagementObjectSearcher searcher1 = new ManagementObjectSearcher ("root\\CIMV2", "SELECT * FROM Win32_POTSModem ");
- 下面所示的代码段完成了打开适当的端口并使用 AT 命令与其通信、将数据元素排列在数组中以及显示数据的任务。这里,我们使用函数
WriteLine()
将数据写入输出缓冲区,并使用ReadExisting()
从输入缓冲区读取数据。成功读取数据后,我们使用Array
来排列数据元素。sp.PortName = (string)comboBox1.SelectedItem; if (!sp.IsOpen) { sp.Open(); if (sp.IsOpen) { MessageBox.Show("Connected to Port" + portname); sp.WriteLine("AT"); //Get the modem's attention sp.WriteLine("ATI"); // Get All Manufacturer Info sp.WriteLine("AT+CGMM"); // Get USB Model sp.WriteLine("AT+CGMI"); // Manufacturer sp.WriteLine("AT+CIMI"); // Get SIM IMSI number sp.WriteLine("AT+CGSN"); //Get modem IMEI sp.WriteLine("AT+CGMR"); // Print firmware version of the modem } } t = sp.ReadExisting()).Contains("OK") string[] f = new string[100]; string[] c = t.Split(z); int m = 0; for(int i = 0; i < c.Length; i++) { if (!(c[i].Equals(""))) { f[m] = c[i]; m++; } } // Display the Data if ((f[i].Equals("AT+CGMI"))) { label6.Text = f[i + 1]; // Manufacturer } if ((f[i].Equals("AT+CIMI"))) { label7.Text = f[i + 1]; // Get SIM IMSI number } if ((f[i].Equals("AT+CGSN"))) { label8.Text = f[i + 1]; //Get modem IMEI } if ((f[i].Equals("AT+CGMM"))) { label11.Text = f[i + 1]; // Get Model of USB 3G } if ((f[i].Equals("AT+CGMR"))) { label12.Text = f[i + 1]; // Print firmware version of the modem }
工作原理
Visual Studio 2008 用于开发此代码。
- 单击“查找端口”按钮后,它将列出 USB 调制解调器连接的端口名称。
- 从下拉列表中选择适当的端口。
- 然后单击“连接并获取调制解调器信息”按钮以获取来自调制解调器的信息。
- 它检索诸如制造商、IMSI 号码、IMEI 号码、USB 设备的型号、调制解调器连接的端口以及固件版本等信息。
- 单击“断开连接”按钮后,它将断开端口与调制解调器的连接。
- 单击“退出”按钮后,它将退出应用程序。
此代码在 EC122 CDMA USB 调制解调器上运行良好。