WinCE下的USB游戏手柄驱动 GamePad Joystick

2024-01-16 14:58

本文主要是介绍WinCE下的USB游戏手柄驱动 GamePad Joystick,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

USB接口的游戏手柄和键盘一样,称之为USB HID设备,在CE 系统已经有了 键盘/鼠标 两种HID 设备的驱动。
在public\common\oak\drivers\usb 下面已经有了两种设备的驱动程序源码。在该文件夹下,分成了CLASS,CLIENTS,COMMON,HCD,INC,USBD 几个文件夹,其中INC 和COMMON 里面有一个lock.c 的程序,这个程序很明显是将要被其他USB 有关的驱动程序所使用的一个锁,代码很简单,只是一个类似临界区的封装体,可以保护多线程对同一内存区域的读写访问,可以先不去管它。CLIENTS 文件夹可能最初微软的开发人员是用来放置设备驱动程序的,但是后来没有放,而发布的时候也没有删除,所以遗留了下来,里面是个空的文件夹,所以没用实际用处。USBD 和HCD 是前述的底层驱动,里面含有很多子文件夹和程序,由于我们只针对USB 设备驱动,因此对这两部分不做分析,有兴趣的朋友可以自己去了解. 重点就在CLASS 文件夹了,展开来看,里面又包含了COMMON、HID、PRINTER、STORAGE 几个文件夹,同样,COMMON 里面存放的源程序是为HID、PRINTER、STORAGE所共有的。HID 是USB 输入设备如键盘/鼠标的样例驱动程序,PRINTER 是USB 打印机的样例驱动程序,STORAGE是USB 存储设备如U 盘的样例程序.
在HID 下有CLIENTS 和HIDCLASS 两个文件夹. HIDCLASS 里有所有HID 设备驱动的共用代码(MDD 和PDD).HID设备驱动的注册表在[HKEY_LOCAL_MACHINE\Drivers\HID\LoadClients\Default\Default]下面,已经存在的设备驱动为鼠标[1_2\Mouse] [1_6\KEYPAD],这里面的数字到底是什么含义,我们来看一下下面几个宏定义就知道了:
//该宏定义在\PUBLIC\COMMON\OAK\INC\hidusage.h文件中
#define HID_USAGE_PAGE_GENERIC ((USAGE)0X01)
#define HID_USAGE_GENERIC_MOUSE ((USAGE)0X02)
#define HID_USAGE_GENERIC_JOYSTICK ((USAGE)0X04)
#define HID_USAGE_GENERIC_GAMEPAD ((USAGE)0X05)
#define HID_USAGE_GENERIC_KEYBOARD ((USAGE)0X06)
接下来就是要实现一个HID设备的驱动,这里至少要实现两个函数:HIDDeviceAttach和HIDDeviceNotifications。当HID设备插入时,系统会调用HIDDeviceAttach来加载相关程序,可以在加载的时候创建一个线程来接受键盘按键,并发送键盘事件,使用keybd_event或者SendInput相关函数。当然也可以将驱动实现为普通的流接口设备驱动,实现XXX_Init,XXX_Open,XXX_Read,XXX_Write等相关函数,并添加注册表,那么在应用层中就可以使用CreateFile来实现USB HID设备的读写功能了。例如我们现在使用的USB KEY等加密设备,大多也是作为一个HID设备来加载的。
相关驱动下载: 
文件:HID_Gamepad_driver.rar
大小:4KB
下载:下载
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(1059) | 评论(2) | 转发(0) |
0

上一篇:WinCE的USB Device功能实现(Serial,RNDIS,Mass_Storage)

下一篇:Samsung的ARM处理器iROM启动模式介绍

相关热门文章
  • linux守护进程的几个关键地方...
  • stagefright与opencore对比
  • 嵌入式Linux之我行——u-boot-...
  • 嵌入式Linux之我行——内核、...
  • android的logcat详细用法
  • 如何编写一个C程序实现将字符...
  • C程序能不能在main函数之前调...
  • 看一个程序调用了哪些动态库用...
  • 回复不了你啊,咋,威望值不够...
  • mysql的medium.cnf在哪里?...
给主人留下些什么吧!~~

chinaunix网友2011-05-30 14:36:21

老大,我的PDA是纯PPC,pocket pc 2003,不是手机WM PPC。我的注册表项HKEY_LOCAL_MACHINE\Drivers里面并没有HID,包含LoadClients\Default\Default项的注册表项是一个名为USB的项,我手工建HID不能加载这个驱动,然后在USB的default里面照你的注册表手工加入还是不行。dll文件已经放到windows里面了,该怎样才能加载了。我安装了一个网上下载的USB键盘、鼠标驱动,却是正常使用的,唯独USB手柄不能用,是个仿PS的简单手柄,XP无驱型。

回复 | 举报

chinaunix网友2011-03-08 20:28:19

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com

回复 | 举报
评论热议

这篇关于WinCE下的USB游戏手柄驱动 GamePad Joystick的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/612957

相关文章

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3