C# python自动获取modem里的串口号 高通芯片C++ MFC

同事实现的: 

C# 

 public string getDevice()
        {
            string del = "";
            //ManagementObjectSearcher mosList = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity"); //所有设备
            ManagementObjectSearcher mosList = new ManagementObjectSearcher("SELECT * FROM Win32_POTSModem");
            foreach (var mos in mosList.Get())
            {           
                del = mos["Name"].ToString();//名字
                Log(del);
                //del = mos["DeviceID"].ToString();//VID PID
                //del = mos["AttachedTo"].ToString();//com
            }
            mosList.Dispose();
            return del;
        }

 python

 MFC暂时没找到。用注册表里串口也能实现。

C++通过注册表实现串口自动:

#include <iostream>
#include <windows.h>
//***********************
// 注册表  枚举所有的串口,以及名称
//return 特定的串口号 或-1失败 
//***********************
int getSpecialComNumByRegister()
{
	HKEY hkey;
	int result;
	int i = 0;
	result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Hardware\\DeviceMap\\SerialComm", NULL, KEY_READ, &hkey);
	if (ERROR_SUCCESS == result)   //打开串口注册表   
	{
		do
		{
			TCHAR portName[0x100] = { 0 };//portName是注册表名称(不是设备管理器里的前缀),commName就是值 串口名字COMN
			TCHAR commName[0x100] = { 0 };
			DWORD dwSize = sizeof(portName) / sizeof(TCHAR);
			DWORD dwLong = dwSize;
			result = RegEnumValue(hkey, i, portName, &dwLong, NULL, NULL, (LPBYTE)commName, &dwSize);
			if (ERROR_NO_MORE_ITEMS == result) { break; }  			//   枚举串口				 	
			printf("%d %s %s\n", i, portName, commName); //显示名称及值

			if ((strcmp(portName,"\\Device\\sprd_usbcomm_serial2")==0) || (strncmp(portName, "\\Device\\QCUSB_COM",17) == 0 && strncmp(portName+strlen(portName)-2,"_2",2)==0)   ) //特定串口
			{
				RegCloseKey(hkey); //关闭注册表
				return atoi(commName + 3);//去掉COM只取号 正常返回
			}
			i++;
		} while (TRUE);
		RegCloseKey(hkey); //关闭注册表
	}
	return -1;//没找到特定串口
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄人软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值