实践 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: 目前仅仅实现到这里,华丽分割线------------------------------------------------------------------------------------------------

 

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
USB HID设备是一种使用USB接口进行通信的设备,它可以通过发送和接收数据来实现和计算机的交互。为了USB HID设备数据,我们需要编一个程序来实现这个功能。 首先,我们需要使用合适的编程语言和相关的库来开发这样一个程序。对于Windows系统,我们可以使用C#、C++或者Python等语言来编程序;对于Linux系统,则可以选择C语言、Python等来实现。然后,我们需要选择一个合适的USB库,比如libusb,它提供了一些用于控制USB设备的函数和结构体。 接着,我们需要编程序来进行USB设备的初始化和连接。一般来说,我们需要找到目标设备的vendor ID和product ID,然后使用相关函数来打开设备并进行数据。 在程序运行的过程中,我们可以使用相关函数来设备发送的数据,也可以发送命令或者数据设备。在数据时,我们需要根据设备的协议和数据格式进行解析和处理,以确保能正确地获取到设备发送的信息。 最后,我们需要进行错误处理和资源释放。当程序出现错误时,我们需要进行相应的处理,比如关闭设备,释放相关资源等,以确保程序的稳定性和可靠性。 总的来说,编USB HID设备数据程序是一个需要考虑设备协议、数据格式等因素的复杂任务,但通过合适的编程语言和库的选择,以及认真的编程实现,我们可以成功地实现这一功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值