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节点,示例 ...
随机推荐
- hive1.1.0安装
0. 说明 已经安装好Hadoop-1.2.1. 安装好mysql. 1.解压安装包 先把安装包下载.然后解压: tar -zxvf apache-hive-1.1.0-bin.tar.gz 2.配置 ...
- 二分查找、two points、排序
二分查找 1.查找某元素.循环条件 low <= high,最终结果位mid, 如果查询失败则返回-1. int binSearch(int num[], int low, int high, ...
- (转)Redis的那些最常见面试问题
背景:最近在准备面试相关的题目,发现redis基本一片空白,有必要好好总结下. 转自:https://www.cnblogs.com/Survivalist/p/8119891.html 1.什么是r ...
- SQL Server 一句Sql把表结构全部查询出来
--一句Sql把表结构全部查询出来 SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colo ...
- P1169 [ZJOI2007]棋盘制作 && 悬线法
P1169 [ZJOI2007]棋盘制作 给出一个 \(N * M\) 的 \(01\) 矩阵, 求最大的正方形和最大的矩形交错子矩阵 \(n , m \leq 2000\) 悬线法 悬线法可以求出给 ...
- mysql 8.0.12 创建新的数据库、用户并授权
Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码: [root@host]# mysqladmin -u root password "new_p ...
- elasticsearch索引清理
只是记录两条简单的命令 查看所有的索引文件: curl -XGET http://localhost:9200/_cat/indices?v 删除索引文件以释放空间: curl -XDELETE ht ...
- JVM总结(四):JVM类加载机制
这一节我们来总结一下JVM类加载机制.具体目录如下: 类加载的过程 类加载过程概括 说说引用 详解类加载全过程: 加载 验证 准备 解析 初始化 虚拟机把描述类的数据从Class文件加载到内存,并对数 ...
- np.array和np.asarray区别
- 使用Spring时web.xml中的配置
使用Spring时web.xml中的配置: <?xml version="1.0" encoding="UTF-8"?> <web-app x ...