MFC 使用用指定USB设备串口
在做设备串口通讯时,往往需要自动连接到想要连接的usb转串口设备上。
#include <Setupapi.h>
int CMFCApplication1Dlg::FindUSBCOM()
{
#pragma comment(lib, "setupapi.lib")
HDEVINFO hDevInfo = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
if (hDevInfo == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("获取系统设备列表失败"));
return -;
}
SP_DEVINFO_DATA deviceInfoData;
deviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
deviceInfoData.DevInst = ;
deviceInfoData.Reserved = ; DWORD regDataType;
LPTSTR buffer = new TCHAR[];
DWORD buffersize = ; LPTSTR bufferVid = new TCHAR[];
DWORD buffersizeVid = ; LPTSTR bufferPortNum = new TCHAR[];
DWORD buffersizePortNum = ; int portNum = ;//Com1 portNum=1 for (int i = ; SetupDiEnumDeviceInfo(hDevInfo, i, &deviceInfoData); i++)
{ buffersize = ;
SetupDiGetDeviceRegistryProperty(hDevInfo, &deviceInfoData, SPDRP_CLASS, ®DataType, (PBYTE)buffer, buffersize, &buffersize); if (CString(buffer).MakeUpper() == "PORTS")
{ buffersizePortNum = ;
SetupDiGetDeviceRegistryProperty(hDevInfo, &deviceInfoData, SPDRP_FRIENDLYNAME, ®DataType, (PBYTE)bufferPortNum, buffersizePortNum, &buffersizePortNum);
int comIndex = CString(bufferPortNum).MakeUpper().Find(_T("COM"));
if (comIndex > -)
{
//Silicon Labs CP210x USB to UART Bridge (COM4)
portNum = _ttoi(CString(bufferPortNum).Mid(comIndex + , )); } buffersizeVid = ;
SetupDiGetDeviceRegistryProperty(hDevInfo, &deviceInfoData, SPDRP_HARDWAREID, ®DataType, (PBYTE)bufferVid, buffersizeVid, &buffersizeVid); if (CString(bufferVid).MakeUpper().Find(_T("VID_10C4")) > -)
{
if (buffer != nullptr)
{
delete[] buffer;
}
if (bufferVid != nullptr)
{
delete[] bufferVid;
}
if (bufferPortNum != nullptr)
{
delete[] bufferPortNum;
}
// 释放设备
SetupDiDestroyDeviceInfoList(hDevInfo);
return portNum; } }//end if ports }// end for
if (buffer != nullptr)
{
delete[] buffer;
}
if (bufferVid != nullptr)
{
delete[] bufferVid;
}
if (bufferPortNum != nullptr)
{
delete[] bufferPortNum;
}
// 释放设备
SetupDiDestroyDeviceInfoList(hDevInfo);
return portNum;
}
MFC 使用用指定USB设备串口的更多相关文章
- USB设备---URB请求块
1.urb 结构体 USB 请求块(USB request block,urb)是USB 设备驱动中用来描述与USB 设备通信所用的基本载体和核心数据结构,非常类似于网络设备驱动中的sk_buff 结 ...
- Linux usb子系统(二):USB设备驱动usb-skeleton.c
usb驱动分为通过usbfs操作设备的用户空间驱动,内核空间的内核驱动.两者不能同时进行,否则容易引发对共享资源访问的问题,死锁!使用了内核驱动,就不能在usbfs里驱动该设备. 下面转载的一篇分析u ...
- KVM客户机使用主机USB设备
有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持 -usbdevice devname 为客户机增加usb设备,devn ...
- (三) 查看USB设备
目录 查看USB设备 lsusb ll /sys/bus/usb/devices cat /sys/kernel/debug/usb/devices dmesg title: 查看USB设备 date ...
- kvm云主机使用宿主机usb设备
有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持-usbdevice devname 为客户机增加usb设备,devna ...
- 2018最新mfc作为上位机接收硬件端USB或串口数据显示成图片 解决串口接收数据丢字节丢包问题
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9490616.html 本文用的是VS2013MFC写串口数据接收: 第一步:首先建立一个MFC ...
- 在树莓派下对多个串口转USB设备进行设备名称绑定操作
在开发过程中,需要用一个树莓派链接多个串口转USB设备(GPS模块,数传模块等),在树莓派linux系统环境下,USB串口设备的命名规则是 /dev/ttyUSB0 ,/dev/ttyUSB1,/de ...
- MFC枚举USB设备碰到的一个疑难,还没解决
代码如下: 打开USB Hub设备之后,返回句柄hHubDevice,然后使用EnumerateHubPorts来枚举Hub的端 口.疑问在代码的中文注释中. bool CUsbEnumHub::En ...
- linux下如何使rtc设备注册为指定的设备文件/dev/rtc1?
答: 通过设备树中的aliases节点来指定即可; 如某rtc设备的节点名为rtc@68,那么想让系统为该设备生成指定的设备文件/dev/rtc1,那么就在设备树的根节点中增加aliases节点,示例 ...
随机推荐
- 从C,C++,JAVA和C#看String库的发展(一)----C语言和C++篇
转自: http://www.cnblogs.com/wenjiang/p/3266305.html 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的 ...
- centos7配置本地yum源 使用安装镜像安装软件
1. 在cdrom挂载安装镜像.(物理机则插入光盘,虚拟机则在CD/DVD中选择iso镜像.如果虚拟机mount时提示找不到则在选择iso镜像上方勾选“已连接”和“启动时连接”,或者点击 虚拟机下方状 ...
- 运行vb写的程序,有些电脑上会弹出一个与office相关的窗口
到网上搜索了一下,找了几个解决方案,不过我的电脑上没出现过,所以先收藏一下,或许以后能用上. 来自:http://bbs.csdn.net/topics/380204412 今天将注册表的项一个个删除 ...
- NO.7:别让异常逃离析构函数
1.析构函数绝对不要吐出异常,如果一个析构函数可能抛出异常,析构函数应该捕获任何异常,然后要么吞下它们或者退出程序 2.如果用户需要对析构内的可能抛出异常的操作做出反应,则应该将操作放入除析构函数外的 ...
- eclipse中中文注释乱码怎么解决
作项目一般都是用UTF-8编码的,eclipse的默认编码是GBK,你在菜单栏Window里,选Preferences选项,第一项General里的Workspace,选定后右面有个Text file ...
- (注意格式,代替C++的getchar())汉字统计hdu2030
汉字统计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- Java如何实现跨平台
在前面讲解编程语言的时候我们看到,通过引入编译器,解决了使用机器语言编程带来的问题.但这有待来了另一个问题:不同的平台(你可以理解成CPU不同.操作系统不同)所能理解的二进制机器指令是不一样的,编译器 ...
- SQL Server关于WITH CUBE、WITH ROLLUP和GROUPING使用
通过查看sql 2005的帮助文档找到了CUBE 和 ROLLUP 之间的具体区别:CUBE 生成的结果集显示了所选列中值的所有组合的聚合.ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚 ...
- SDRAM学习笔记(二)
上一篇博客主要讲解了一下SDRAM整体结构以及PCB方面的注意事项.接下来讲解一下需要用到的一些命令. 1.常用命令的缩写 上述是常用到的一些指令集. 2.模式寄存器 (1)突发长度 通过对A0~ ...
- python---定义一个session类
首先:注意cookie中的get_cookie是返回字符串,而get_secure_cookie返回的是字节类型 #self.get_secure_cookie() #The decoded cook ...