C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx
- 文档编号:13598819
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:14
- 大小:16.88KB
C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx
《C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++ MFC界面读写USB HID设备数据程序Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ MFC界面读写USB HID设备数据程序 MFC 界面 读写 USB HID 设备 数据 程序