C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx

上传人:b****3 文档编号:13598819 上传时间:2022-10-12 格式:DOCX 页数:14 大小:16.88KB
下载 相关 举报
C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx_第1页
第1页 / 共14页
C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx_第2页
第2页 / 共14页
C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx_第3页
第3页 / 共14页
C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx_第4页
第4页 / 共14页
C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx

《C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。

C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx

ULONGDeviceInterfaceDetailDataSize;

//定义一些变量,以后会用到

SP_DEVINFO_DATADeviceInfoData;

SP_DEVICE_INTERFACE_DATADeviceInterfaceData;

PSP_DEVICE_INTERFACE_DETAIL_DATADeviceInterfaceDetailData;

//PSP_DEVICE_INTERFACE_DETAIL_DATAtest;

//第一步:

获取deviceID

GUIDdeviceId;

HidD_GetHidGuid(&

deviceId);

//第二步:

获取设备信息

HDEVINFOhandle;

handle=SetupDiGetClassDevs(&

deviceId,NULL,NULL,DIGCF_DEVICEINTERFACE|DIGCF_PRESENT);

//GetonlyHIDdevices

//第三步:

对所有的设备进行枚举

//SetupDiEnumDeviceInterfaces();

result1=false;

//定义一些变量

result2=false;

CStringtemp11="

"

;

do

{

DeviceInterfaceData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA);

result1=SetupDiEnumDeviceInterfaces(

handle,

NULL,//INPSP_DEVINFO_DATADeviceInfoData,OPTIONAL

&

deviceId,

Count,

DeviceInterfaceData

);

//获得设备详细数据(初步)

SetupDiGetDeviceInterfaceDetail(handle,

DeviceInterfaceData,

NULL,

0,

strSize,

NULL);

requiredSize=strSize;

DeviceInterfaceDetailData=(PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(requiredSize);

DeviceInterfaceDetailData->

cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);

DeviceInfoData.cbSize=s第一步:

DeviceInfoData.cbSize=sizeof(SP_DEVINFO_DATA);

//再次获得详细数据

result2=SetupDiGetDeviceInterfaceDetail(handle,

DeviceInterfaceDetailData,

requiredSize,

DeviceInfoData);

//获得设备路径(最重要的部分)

temp=DeviceInterfaceDetailData->

DevicePath;

m_ctllHIDdevices.AddString(temp);

Count++;

}while(result1);

UpdateData(false);

izeof(SP_DEVINFO_DATA);

第二步:

循环读取HID设备数据(根据用户提供的HID的vendorID和productID),并且把字节解码成二进制,在MFC界面上用LED展示:

为了不影响主线程的运行,我把读取数据的操作,放在一个子线程里!

每隔50ms去读取一次数据!

首先创建一个线程:

HANDLEhThread1;

bStopHID=false;

//这个变量,以后用来停止线程

UpdateData(true);

//更新界面,获取变量

hThread1=CreateThread(NULL,0,Thread_Enable_Read,(LPVOID)this,NULL,NULL);

在线程的程序里:

CusbhidDlg*p=(CusbhidDlg*)pvParam;

//获取主窗口的指针,用来调用主窗口的变量和函数

p->

CStringDevicePath;

temp="

//1

intvenderID=p->

v_eVendorID;

//从窗口里获取用户输入的VendorID

intproductID=p->

v_eProductID;

//从窗口里获取用户输入的ProductID

unsignedcharinbuffer[2];

//用来存放读取的数据,请在这里定义你自己需要的长度,我每次读一个字节进来

unsignedlongnumBytesReturned;

HIDD_ATTRIBUTESdevAttr;

PHIDP_PREPARSED_DATAPreparsedData;

HIDP_CAPSCapabilities;

intreadValue;

boolLED;

intflag=0;

//2

inti=0;

intj=p->

m_ctllHIDdevices.GetCount();

for(i=0;

i<

i++)

m_ctllHIDdevices.GetText(i,temp);

DevicePath=temp;

//CreateFile是非常重要的一步,用来建立于HID通信的句柄

HANDLEhCom=CreateFile(

DevicePath,

GENERIC_READ|GENERIC_WRITE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 军事政治

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1