首页
熊猫办公下载
文件下载
根据地址查询经纬度
登录 / 注册
一级分类:
安全技术
存储
操作系统
服务器应用
行业
课程资源
开发技术
考试认证
数据库
网络技术
信息化
移动开发
云计算
大数据
跨平台
音视频
游戏开发
人工智能
区块链
二级分类:
MFCUSBHID
**正文**在Windows操作系统开发中,MFC(MicrosoftFoundationClasses)是C++库的一个重要组成部分,它为构建桌面应用程序提供了一种结构化的框架。
而USBHID(HumanInterfaceDevice)是USB设备类规范的一种,主要用于人机交互设备,如键盘、鼠标、游戏控制器等。
本文将深入探讨如何使用MFC来实现对USBHID设备的读写操作。
我们需要理解USBHID的基本概念。
HID设备通过使用HID报告来与主机通信,这些报告包含了设备状态和用户输入的数据。
HID类驱动程序是操作系统的一部分,负责解析和处理这些报告。
开发者无需编写驱动程序,只需与设备的接口进行交互即可。
在MFC环境下,我们可以使用`CreateFile`函数打开USBHID设备,其参数通常包括设备的设备路径,例如`\\?\usb#vid_XXXX&pid_YYYY#...`,这里的`XXXX`和`YYYY`分别是设备的供应商ID和产品ID。
接着,我们调用`DeviceIoControl`函数来进行读写操作,传递适当的控制代码,如`IOCTL_HID_GET_REPORT`或`IOCTL_HID_SET_REPORT`。
为了更方便地管理USBHID设备,我们可以创建一个MFC类来封装这些系统调用。
这个类可以包含成员变量,如设备句柄、设备描述符和报告ID,以及成员函数,如`OpenDevice`、`ReadReport`、`WriteReport`和`CloseDevice`。
以下是一个简单的MFC类设计示例:```cppclassCHIDDevice:publicCObject{public:CHIDDevice();~CHIDDevice();boolOpenDevice(LPCTSTRdevicePath);voidCloseDevice();boolReadReport(void*buffer,DWORDsize);boolWriteReport(void*buffer,DWORDsize);private:HANDLEm_hDevice;};```在`OpenDevice`中,我们执行`CreateFile`,在`CloseDevice`中关闭句柄。
`ReadReport`和`WriteReport`则分别使用`DeviceIoControl`进行读写操作,传递适当的缓冲区和大小。
在实际应用中,我们还需要处理USBHID设备的枚举和选择。
可以遍历`SetupDiGetClassDevs`返回的设备信息集,获取HID设备的详细信息,并根据需求选择合适的设备。
此外,为了处理异步读写,可以使用MFC的消息机制,如消息队列和消息映射,或者使用CAsyncSocket或CAsyncMonikerFile等异步I/O类。
利用MFC开发USBHID应用涉及以下几个关键步骤:1.**设备枚举**:使用`SetupDiGetClassDevs`枚举HID设备,通过`SetupDiEnumDeviceInfo`获取设备详细信息。
2.**设备连接**:使用`CreateFile`打开设备,获得设备句柄。
3.**读写操作**:通过`DeviceIoControl`进行数据交换,读取或设置HID报告。
4.**错误处理**:适当处理可能的错误,如设备未找到、访问权限问题等。
5.**异步处理**:根据需要,使用MFC的消息机制实现异步读写。
通过以上步骤,开发者可以构建一个功能完备的MFC应用程序,实现对USBHID设备的高效控制。
在实际项目中,还可以考虑添加设备事件监听、多设备管理等功能,以提升应用的灵活性和可扩展性。
2025/10/11 10:31:51
30.04MB
USB
1
S变换——Matlab(S变换函数,一个例子)
S变换——Matlab(S变换函数,一个例子)。
S变换。
2025/10/11 10:23:33
115KB
S变换
c#
Matlab
S变换函数
1
字库Bin,Unicode码OEMCP(GBK)互转
GT21L16S2W全字库,查找函数适用,单独每个字库独立生成bin,配合文件系统,可以直接读取bin内容到相应字库,可以提代HZ16x16,HZ12x12,GB2312_8x16,GB2312_6x12,Arial12,ASCII6x16,ASCII6x12,ASCII5x7,ASCII7x8,等信息让点阵屏显示,并有Unicode与GOEMCP(GBK),同时也把查表内容生成bin,减少flash占用,对应表内容生成对应bin
2025/10/9 6:08:06
992KB
GT21L16S2W
字库
Bin
1
cdma多用户检测算法的仿真
matlab程序,包括3个文件:mseries.m编写了一个产生m序列的函数;
mud.m用来比较传统单用户检测、线性解相关多用户检测、最小均方误差多用户检测的误码率;
mud_plot比较后并画出误码率-信噪比曲线。
2025/10/9 6:13:05
3KB
cdma
1
基于差分进化算法的多用户OFDM自适应资源分配
针对多用户正交频分复用系统自适应资源分配问题,提出一种改进的子载波和基于差分进化算法的功率自适应分配算法。
该算法首先在均等功率下进行子载波分配,然后通过添加约束条件检测改进步骤,改进差分进化算法,并采用该算法根据设置的兼顾用户公平性与系统容量的目标函数,全局寻优实现用户间的功率分配。
仿真结果表明,算法在低算法复杂度及兼顾用户公平性的情况下实现了较高的系统容量提升,证明其有效性。
2025/10/7 17:17:08
470KB
多用户正交频分复用;自适应资源分配;差分进化算法;系统容量
1
matlab时频分析工具箱
matlab时频分析工具箱+安装方法+函数说明+最新版tftb,简单好用
2025/10/7 10:48:01
2.22MB
时频分析
1
7种插值算法
7种插值算法的c++代码实现1拉格朗日插值(POLINT)2有理函数插值(RATINT)3三次样条插值(SPLINE(二阶导数值)->SPLINT(函数值))4有序表的检索法(LOCATE(二分法),HUNT(关联法))5插值多项式(POLCOE(n2),POLCOF(n3))6二元拉格朗日插值(POLIN2)7双三次样条插值(SPLIE2)
2025/10/7 6:05:53
71KB
插值算法
1
ASP版hmac和md5加密函数,支持中文,带unicode和utf8转码
上次曾经传过一个易宝、支付宝、财付通、云网等多用MD5加密程序。
易宝是采用hmac的MD5加密,提供的ASP版函数不支持中文,使用dll注册那个兼容又不太好。
上次我发布的加密程序也不支持中文,且支付宝那个加密函数是错误的。
为此我专门研究了三天的hmac方案,当然了我也只是通过改进代码反复测试而已。
先是调用易宝提供的C++版dll,因为我知道它支持中文。
我先是把ASP版的密钥key进行unicode处理,然后用中文密钥与dll版加密结果竟然一致了。
当时一高兴,认为处理中文字符肯定是采用unicode的。
结果把密文换成中文一试,又不行了。
我又想到按普通字符处理,中文字符再And&HFF,反复试验还是不行。
浪费了两天,也找到了另一个C++版hmac函数源码,没看到有字符编码处理。
最后才想到易宝提供的其它源码。
PHP源码还是比较容易看懂的,原来加密的字符text和密钥key都是先转换为UTF-8编码。
这一点与原先那个dll里就可能不一致,把PHP上传到空间一测试,果然密钥使用中文是不一样的。
我也无法知道易宝自己到底使用哪一种方案,先设计一个UTF-8的转码函数吧。
网上找了下,光这些函数都有几十K大小,还是自己设计省事。
ASP版的hmac都不支持中文,就是没有转码函数。
VB还有StrConv可以转换unicode,ASP却不能用。
其实我们常用的ASP版md5加密,与其它程序的也是不兼容中文。
原因还是ASP转换unicode十分困难,但是支付宝的接口是有这么个函数的,而且代码很简练,我参考它设计了UTF-8编码函数。
(支持多国语言的哦)经过三天的改进,程序从17K精简到了9K,使hmac兼容中文,md5也提供了两个版本,一是ASP简版,二是标准版。
这个标准版是指其它程序都在采用的unicode编码方案,其实ASP简版才是我们最多使用的,但它并不通用。
调用方法:HmacMd5(text,key)-加密内容支持中文,但key最好用非中文的。
md5(text)-简版,ASP_MD5(text)-标准版支付宝一定要用ASP_MD5,财付通的加密内容一般没中文的,所以两者均可。
2025/10/5 17:20:38
3KB
ASP
hmac
md5
utf-8
1
c语言航班信息系统
1. 学习和掌握结构体和链表相关知识,掌握程序设计基本过程;
2. 简单的系统与功能分析,了解航班信息管理系统的需求,用C语言开发航班信息管理系统;
3. 建立数据结构链表,数据内容包括航班号、航线、起飞时间、到达时间、机型、所属公司、价格;
4. 编写实现程序功能的各个函数;
5. 建立一个测试数据表,包含十多条航班信息,进行数据测试;
6. 使用数据链表实现数据的:录入、查询、显示、删除、修改、排序、文件保存、系统退出等功能;
调试系统,处理少数系统出错,优化系统界面。
2025/10/5 13:52:15
22KB
航班信息管理
源代码
1
EKF卡尔曼算法
扩展卡尔曼滤波算法,具有详细的函数说明,可以根据情况进行调用。
2025/10/5 4:51:44
2KB
EKF
1
共 1000 条记录
首页
上一页
下一页
尾页
钉钉无人值守自动打卡脚本 永不迟到的神器 安卓和苹果教程
New!
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03
15KB
钉钉
钉钉打卡
个人信息
点我去登录or注册
|
微信登录
一言
热门下载
双系统双频伪距单点定位程序
Docker构建tomcat镜像jdk1.8+tomcat9.zip
飘逸传世引擎源代码
数据库系统概论第五版
中科院考博英语2009-2018年试题及答案解析(十五套436面).pdf
KEPServerEXV6.7.zip
高光谱和LiDAR多模态遥感图像分类数据集
吉利新金刚2016款车机导航系统
CNS2_CN_VW_P0095D_0332.7z
StimulsoftReports2020.1.1License.rar
R9390系列BIOS修改和风扇调速工具
ENVI去云补丁Haze_tool文件及其使用说明和安装方法
vue项目demo(asp.netmvc5+vue2.5)
几何画板课件350套.zip
ABAQUS金属非稳态和稳态切削过程的模拟分析_张东进.pdf
最新下载
coding4fun的包
SQLServer2016LocalDB
flappybird强化学习
京东MySQL数据库主从切换自动化
高级VisualBasic编程
区域生长图像分割-MATLAB程序,注释比较完善
C#学生成绩管理系统源代码
CanuMobiSim
Android实验报告
基于RSSI强度、指纹库仿真代码,主要用于教学研究
vs2008编译好的libharu
linux文件完整性监控的实现
基于8086的交通灯仿真proteus电路图汇编语言实现
数字信号处理第2版[朱冰莲,方敏编著]2014年版.rar
Goc编程工具
其他资源
VC以及SQL松散的教师管理体系
基于stm32f407多通道数据收集,双buff,直接留存到sd卡
很好用的卡键器
SQL注入倾向全打仗
apps:我的投资组合名目!-源码
Springinaction4thEdition&Spring实战第四版中文及英文对照pdf
Qt实现多功能计算器
THB6128步进电机驱动电路
cudnn-11.0-windows-x64-v8.0.2.39.zip
每一5分钟输入一次MA值.zip
CentOS7装置.zip
Oracle10G_Client
ORC识别DLL
嵌入式linux通过mdio读写phy寄存器
ASP.NET数据库网站计划教程(C#版)[孙士保]第4章验证控件.ppt
【其他】Java游戏中斜视角编纂器及引擎源代码.zip
从三角函数到椭圆函数(献给蓝明月)
学习GNUEmacs(第2版.明晰)
baidu首页端午节龙舟代码
r-shinydashboard-feedstock:r-shinydashboard的conda-smithy存储库-源码