实践 C++ MFC界面读写USB HID设备数据程序

在开发了一个多线程USB烧写程序后,得到新的任务,要将HID的内容放到里面,没有人带着做细致的讲解,靠自己自生自灭:

 

1, 什么是HID?

(项目要的急,没有什么了解就开始了!只知道,在Windows->DeviceManager下面有时候找COM端口的时候,会去人体输入学设备里面找,里面有鼠标键盘之类的HID,具体是啥还不知道。)HID: 猜想是 Hardware ID,用来标记硬件设备的序号的,事实上不是! HID: Human Interface Device.

2,如何入手?

      自生自灭当然是找开源项目,或者sample code。直接关键词搜索,找到了很多“C++ MFC界面啥的”,明显都是转载,还没写明转载地址,这里顺便诟病下CSDN,很多东西一搜,都是CSDN的,结果都是转载别人,不照顾排版的。气愤的看不到照片,没办法很好的跟着做。

        终于被我找到原文出处:C++ MFC界面读写USB HID设备数据程序

        我没有打算完全照着做。我打算先写个MFC最简单的界面(吹牛吧!自动生成,也敢说写)。

3,环境:

    Windows 10

    Microsoft Visual Studio 2017

4,过程:

    1,建立一个MFC工程,基于Dialog的, 剩下默认配置。(具体参考网上教程,一般都在MFC课程的第1、2课,我的Leader已经让我放弃MFC了,太旧了,但是我目前开发的东西用这个,实现了HID后,就换!我保证!)

    2, 以最简单的方式,在Dialog界面,双击Button OK,生成一个消息处理函数OnBnClickOk,然后把参考文章里的东西抄进去,边抄边编译。Till-----------Here:

#include "Setupapi.h"
#include "hidsdi.h"

void CHIDRetryDlg::OnBnClickedOk()
{
	
	// TODO: 在此添加控件通知处理程序代码
	TRACE("Button OK In.\n");

	m_ctrlHIDdevices.ResetContent();
	UpdateData(FALSE);
	CString temp;
	int Count = 0;
	DWORD strSize = 0, requiredSize = 0;
	BOOL result1, result2;
	ULONG DeviceInterfaceDetailDataSize;
	SP_DEVINFO_DATA DeviceInfoData;
	SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
	PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData;
	GUID deviceId;

	HidD_GetHidGuid(&deviceId);

	//CDialogEx::OnOK();
}

我遇到了以下报错:

为了解决这个错误,我真的是以自生自灭的方式Baidu、Google了很久,试了很多方法,最后也没有解决,直到----又一次CSDN拯救了我:VC2005中为什么无法解析HidD_GetHidGuid函数? [问题点数:20分,结帖人fcymk2]

我用了其中一个被人否定的方法解决掉了(事实上,题主与我遇到的问题不同,但是他猜到了这个解决办法,并非是他的主要问题所在):

2018-12-11 Update: 目前仅仅实现到这里,华丽分割线------------------------------------------------------------------------------------------------

 

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页