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节点,示例 ...
随机推荐
- codeforces 793B - Igor and his way to work(dfs、bfs)
题目链接:http://codeforces.com/problemset/problem/793/B 题目大意:告诉你起点和终点,要求你在只能转弯两次的情况下能不能到达终点.能就输出“YES”,不能 ...
- android sqlite批量插入数据速度解决方案
转自 http://hi.baidu.com/hfutonline/blog/item/62b1e4de8bdf4b2e5882dd28.html 最近在做android项目的时候遇到一个问题,应用程 ...
- c++ io标准库2
转自:http://www.2cto.com/kf/201110/109445.html 接下来我们来学习一下串流类的基础知识,什么叫串流类? 简单的理解就是能够控制字符串类型对象进行输入输出的类,C ...
- 【模板】Splay
Splay 均摊复杂度证明见此处 \(\rightarrow\) 链接 代码如下 #include <bits/stdc++.h> using namespace std; const i ...
- C++11并发——多线程std::mutex (二)
https://www.cnblogs.com/haippy/p/3237213.html Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 <mute ...
- 编译RocketMQ
目前最新版本为 官方没有提供可执行的安装包,只提供了maven项目,去GitHub下载 点击Download ZIP 就可以了,如果你安装了版本控制工具 SVN 或者 GIT 就可以使用它上边的 UR ...
- (reverse)Palindromes hdu2163
Palindromes 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2163 (此题是为了对于JAVA温故知新的) Problem Description ...
- (大数取模)Big Number hdu1212
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- H3C配置FTP服务器
H3C配置FTP服务器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.FTP协议简介 1.FTP协议是互联网上广泛使用的文件传输协议 FTP文件传送协议(File Transf ...
- OSPF基础介绍
OSPF基础介绍 一.RIP的缺陷 1.以跳数评估的路由并非最优路径 2.最大跳数16导致网络尺度小 3.收敛速度慢 4.更新发送全部路由表浪费网络资源 二.OSPF基本原理 1.什么是OSPF a& ...