串口程序改为USB-HID程序

higher9999 2010-12-21 03:11:54
请问串口程序改为USB-HID程序要注意些什么吗?
我现在只是把他们的设备句柄替换了一下
这样做会不会留下什么隐患?

第一次做HID的东西,很多都不明白
...全文
292 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
higher9999 2010-12-23
  • 打赏
  • 举报
回复
刚接到通知不用做了,谢谢两位的回答
用户 昵称 2010-12-22
  • 打赏
  • 举报
回复
除了CreateFile一样,其他的都不一样了。
bigyu7 2010-12-22
  • 打赏
  • 举报
回复
建议看看WDK中附带的USB-HID例子源码,在安装后的src\hid目录下,这些例子中都附有说明文档
史上最全USB HID开发资料,悉心整理一个月,亲自测试。 涉及STM32 C51 8051F例子都有源码,VC上位机例子以及源码,USB协议,HID协议,USB抓包工具,开发文档,开发过程文档。 详细内容就不都说了,看目录。 有了这个资料包,你再说开发不了USB HID,打死我都不信! 好资料当然一分都不能少! 目录: STM32_USB_HID_PC_demo:USB HID Demonstrator Release软件和文档 STM32_USB_HID_分析:STM32 USB HID 固件学习分析 STM32_USB_HID_例子:STM32 USB HID方式收发例子。 STM32_USB_HID_学习心得:基于STM32 的USB程序开发笔记、修改STM32的USB例程为自己所用、初涉USB,初学者USB入门总结——枚举。 STM32_固件库说明文档:STM32_USB_Demo例子的中文说明文档。 STM32F107 鼠标USBHID数据发送程序USB_HID_8051F例子。 USB_HID_C51源码。 USB_HID_PC_源码:PC端打开HID设备、读写操作实例。 USB_HID_PC接收发送工具:用于调试USB HID设备,就相当于串口工具啦。自己写好了HID设备,用它接收发送调试非常方便。 USB_HID_PC通信详解:PC端HID读写操作说明。 USB_HID_VC++6.0_入门级例子:简单读写USB HID设备,很好的参考作用。 USB_HID_VC++6.0_入门级例子开发步骤(图解说明,真详细啊!):一步一步手把把手教你开发VC++6.0 USB HID程序USB_HID_VC++6.0读写设备源码:简单打开HID设备,读写源码,参考的好例子。 USB_HID_VC++6.0源码:出具雏形的VC++6.0 USB HID 工具源码。非常完善了,可以直接当工具使用,关键是有源码! USB_HID_开发过程详细说明:长篇论文一篇,详细说明HID开发过程,包括下位机、上位机、HID驱动的开发,牛! USB_HID协议(英文)。 USB_STM32_HID开发笔记:里面有USB设备枚举的详细过程,抓包说明的哦。当然包括开发过程啦。令牌包、握手包、数据包中的数据都看得到。 USB_URB分析:抓包工具抓到的数据包的详细解析。 USB_VC教程:短论文一篇,用VC++编写USB接口通信程序,简洁扼要说明VC++6.0开发步骤,提纲挈领,值得一看! USB2.0协议(英文)。 USB技术规范(中文):中文的USB技术规范说明,中文的! USB抓包软件:两种抓包工具,bushound和usbtrace。都是破解版,哈哈,自己偷着乐吧! 深入解析STM32_USB库:STM32 USB的库说明。
史上最全USB HID开发资料,悉心整理一个月,亲自测试。 涉及STM32 C51 8051F例子都有源码,VC上位机例子以及源码,USB协议,HID协议,USB抓包工具,开发文档,开发过程文档。 详细内容就不都说了,看目录。 有了这个资料包,你再说开发不了USB HID,打死我都不信!好资料当然一分都不能少! USB_HID_PC通信开发资料目录: STM32_USB_HID_PC_demo:USB HID Demonstrator Release软件和文档 STM32_USB_HID_分析:STM32 USB HID 固件学习分析 STM32_USB_HID_例子:STM32 USB HID方式收发例子。 STM32_USB_HID_学习心得:基于STM32 的USB程序开发笔记、修改STM32的USB例程为自己所用、初涉USB,初学者USB入门总结——枚举。 STM32_固件库说明文档:STM32_USB_Demo例子的中文说明文档。 STM32F107 鼠标USBHID数据发送程序USB_HID_8051F例子。 USB_HID_C51源码。 USB_HID_PC_源码 C端打开HID设备、读写操作实例。 USB_HID_PC接收发送工具:用于调试USB HID设备,就相当于串口工具啦。自己写好了HID设备,用它接收发送调试非常方便。 USB_HID_PC通信详解 C端HID读写操作说明。 USB_HID_VC++6.0_入门级例子:简单读写USB HID设备,很好的参考作用。 USB_HID_VC++6.0_入门级例子开发步骤(图解说明,真详细啊!):一步一步手把把手教你开发VC++6.0 USB HID程序USB_HID_VC++6.0读写设备源码:简单打开HID设备,读写源码,参考的好例子。 USB_HID_VC++6.0源码:出具雏形的VC++6.0 USB HID 工具源码。非常完善了,可以直接当工具使用,关键是有源码! USB_HID_开发过程详细说明:长篇论文一篇,详细说明HID开发过程,包括下位机、上位机、HID驱动的开发,牛! USB_HID协议(英文)。 USB_STM32_HID开发笔记:里面有USB设备枚举的详细过程,抓包说明的哦。当然包括开发过程啦。令牌包、握手包、数据包中的数据都看得到。 USB_URB分析:抓包工具抓到的数据包的详细解析。 USB_VC教程:短论文一篇,用VC++编写USB接口通信程序,简洁扼要说明VC++6.0开发步骤,提纲挈领,值得一看! USB2.0协议(英文)。 USB技术规范(中文):中文的USB技术规范说明,中文的! USB抓包软件:两种抓包工具,bushound和usbtrace。都是破解版,哈哈,自己偷着乐吧! 深入解析STM32_USB库:STM32 USB的库说明。
在实际项目中如果采用uart或者485等进行数据通信那么采用串口IAP进行固件升级将会是个很好的选择,但是有的时候我们的产品或者项目不是用的串口而是用的USB和上位机进行通信,那么这时候就没必要用USB串口工具进行协议转换了,这样不仅存在风险而且增加成本。所以很多时候会采用USBHID、CDC等子类进行数据通信,在这种情况下进行固件升级就会优选DFU方式了。什么是dfu? 准确的说它也是IAP的子集,只不过我们常认为的IAP是通过串口,而dfu是通过USB而已。 通过dfu进行升级需要使用.dfu文件,ST官方提供了将.hex文件或者.bin文件转成.dfu文件的工具,最新的版本是DfuSe—v3.0.4(可以从官方下载),我下载安装之后发现并不能将.hex转.dfu 总是提示我文件错误。还有一个问题就是.bin生成.dfu之后保存的位置总是不对。这真的不能忍呀,于是就直接看官方的MFC源码开始跳进了解BUG的坑。。。 ### 我做了些什么? > 基于ST官方所提供的DfuSe_v3.0.4版本。 > 特色: - 1.解决ST官方版本无法将.hex格式文件直接转换成.dfu格式文件的痛点。 - 2.解决ST官方版本保存生成的目标文件之后文件找不到的BUG。 > 官方v3.0.4使用的是低版本vs,我这里使用的vs2017最新版,如果你要对源码进行修改请安装相关环境。 ### 目录结构 - "Bin": 这里是生成好的最终可以直接使用的目标文件,如果你对源码不感兴趣可以丢弃源码只使用这里的可执行文件就够了。包括: + "DfuFileMgr.exe": 对,这个就是能把hex文件直接转换成dfu的神器了。 + "DfuSeDemo.exe": 这个可执行文件就是对下位机进行固件升级的上位机工具了。 + "DfuSeCommand.exe": 这个是脚本啦,就是给你提供命令行的方式去dfu升级固件,其实在真正的项目中不会使用DfuSeDemo.exe工具进行固件升级的,你想呀,你要是把DfuSeDemo.exe丢给客户,哪个客户能忍受得了?都是直接把这个脚本嵌入到你的客户端应用中去神不知鬼不觉的升级。 + "STDFUTester.exe": 这个跟你没有半毛钱的关系,不要去操心。 + ".dll": 这个就是上面4个exe文件运行所需要的动态链接库,不能少了。 + "Doc": 这是ST官方提供的说明文档,反正我是懒得看,也看不懂。 + "Driver": 这个东西很重要,有的电脑自带DFU驱动,但有很多就不行,所有这里提供了DFU的驱动。根据的你电脑选择对应的驱动安装就好了。如果你是win10,并且没有自带驱动,那么你就试试win8的驱动吧。 + "version.txt": 你懂得 - "Sources": 看名字就知道这是源码了。可以提前告诉你这是基于C++的MFC程序,如果你没玩过MFC那就尽量远离吧,避免溅你一身血。。。 - "keilkill.bat": 这是dos的脚本程序,因为编译代码后会生成很多链接库或者中间文件之类的东西,很占用存储空间。所以就写了个脚本,当你编译完成之后退出vs然后双击执行这个脚本就会把那些垃圾清除了。 - "*.dfu和*.hex": 没啥用,就是给你做测试用的。 ### 代码工程打开的正确方式 > 用VS打开Sources文件夹下的DfuSe.sln,这个就不用我教你了吧。 (前4个要按照顺序) 1. 重新生成STTubeDevice30 2. 重新生成STDFU 3. 重新生成STDFUFiles 4. 重新生成STFUPRT 5. 之后就可以将DfuFileMgr、DfuSeDemo、DfuSeCommand中的任意一个设置为启动项进行启动了。 6. 根据你的期望去实现你的小目标吧。 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
/* 也是从其他地方搞过来的,花了不少积分,我就1分奉献了吧,绝对是好书~ */ 第1章USB概述及协议基础 1.1USB是什么 1.2USB的特点 1.3USB的拓扑结构 1.4USB的电气特性 1.5USB的线缆、插头及插座 1.6USB的插入检测机制 1.7USB的描述符及其之间的关系 1.8USB设备的枚举过程 1.9USB的包结构及传输过程 1.9.1USB的包结构及包的分类 1.9.2令牌包 1.9.3数据包 1.9.4握手包 1.9.5特殊包 1.9.6如何处理数据包 1.10USB的四种传输类型 1.10.1USB事务 1.10.2批量传输 1.10.3中断传输 1.10.4等时传输 1.10.5控制传输 1.10.6端点类型与传输类型的关系 1.10.7传输类型与端点支持的最大包长 1.11本章小结 第2章硬件系统设计 2.1方案及芯片的选定 2.2D12引脚功能说明 2.3D12与AT89S52的连接 2.4串口部分电路 2.5按键部分 2.6指示灯部分 2.7IDE接口部分 2.8单片机部分 2.9元件安装 2.10电路调试 2.11测试程序的编写和调试 2.11.1建立一个工程 2.11.2为工程添加源文件 2.11.3KEIL工具栏及仿真介绍 2.11.4按键驱动的编写 2.11.5串口驱动的编写 2.11.6PDIUSBDl2读写函数及读ID的实现 2.12本章小结 第3章USB鼠标的实现 3.1USB鼠标工程的建立 3.2USB的断开与连接 3.3USB中断的处理 3.4读取从主机发送到端点O的数据 3.5USB标准请求 3.5.1USB标准设备请求的结构 3.5.2GET_DESCRIPTOR请求 3.5.3SET_ADDRESS请求 3.5.4SETCONFIGURATION请求 3.6设备描述符的实现 3.7设备描述符的返回 3.8设置地址请求的处理 3.9配置描述符集合的结构 3.9.1配置描述符的结构 3.9.2接口描述符的结构 3.9.3端点描述符的结构 3.9.4HID描述符的结构 3.10配置描述符集合的实现以及返回 3.11字符串及语言ID请求的实现 3.12设置配置请求的实现 3.13报告描述符的结构及实现 3.14报告的返回 3.15BusHound工具的简介 3.16本章小结 第4章USB键盘的实现 4.1USB键盘工程的建立 4.2设备描述符的实现 4.3配置描述符集合的实现 4.3.1配置描述符 4.3.2接口描述符 4.3.3HID描述符_ 4.3.4端点描述符 4.4字符串描述符 4.5报告描述符 4.6输入和输出报告的实现 4.7 USB键盘实例的测试 4.8再谈USBHID的报告描述符 4.9带鼠标功能的USB键盘(方法一) 4.10带鼠标功能的USB键盘(方法二) 4.11多媒体USB键盘 4.12本章小结 第5章用户自定义的USBHID备 5.1MyUsbHid工程的建立 5.2描述符的修改 5.3报告的实现 5.4对用户自定义的USBHID设备的访问 5.5访问HID设备时所用到的相关函数 5.5.1 获取HID设备的接口类GUID的函数 5.5.2获取指定类的所有设备信息集合的函数 5.5.3从设备信息集合中获取一个设备接口信息的函数 5.5.4获取指定设备接口详细信息的函数 5.5.5打开设备的函数 5.5.6获取HID设备属性的函数 5.5.7从设备读取数据的函数 5.5.8往设备写数据的函数 5.5.9通过控制端点O读取报告的函数 5.5.10通过控制端点O发送报告的函数 5.5.11关闭句柄的函数 5.5.12需要包含的库文件 5.6访问USBHID设备的上位机软件的实现 5.6.1上位机程序编写的思路 5.6.2查找及打开HID设备的代码 5.6.3读输入报告线程的代码 5.6.4写输出报告的代码(发送LED的状态) 5.6.5写输出报告线程的代码 5.6.6线程的创建以及设备插拔事件的注册 5.6.7对设备状态改变事件的处理 5.7软件界面以及使用方法 5.8本章小结 第6章USB串口 6.1串口家族历史 6.2串口接头的引脚分布及功能 6.3USB串口的实现方法 6.4设备描述符 6.5字符串描述符 …… 第7章USBMIDI键盘 第8章U盘 第9章自定义USB设备及驱动开发 第10章USB过滤驱动开发 附录第3章实例的完整调试信息 参考文献 后记 ……
第一章 USB概述及协议基础 1 1.1 USB是什么 1 1.2 USB的特点 1 1.3 USB的拓扑结构 2 1.4 USB的电气特性 5 1.5 USB的线缆以及插头、插座 5 1.6 USB的插入检测机制 7 1.7 USB的描述符及其之间的关系 9 1.8 USB设备的枚举过程 10 1.9 USB的包结构及传输过程 11 1.9.1 USB包的结构及包的分类 11 1.9.2 令牌包 13 1.9.3 数据包 14 1.9.4 握手包 14 1.9.5 特殊包 15 1.9.6 如何处理数据包 15 1.10 USB的四种传输类型 16 1.10.1 USB事务 16 1.10.2 批量传输 16 1.10.3 中断传输 18 1.10.4 等时传输(同步传输) 19 1.10.5 控制传输 20 1.10.6 端点类型与传输类型的关系 21 1.10.7 传输类型与端点支持的最大包长 21 1.11 本章小结 21 第二章 硬件系统设计 1 2.1 方案以及芯片的选定 1 2.2 D12引脚功能说明 2 2.3 D12与89S52的连接 4 2.4 串口部分电路 6 2.5 按键部分 7 2.6 指示灯部分 7 2.7 IDE接口部分 8 2.8 单片机部分 8 2.9 元件安装 8 2.10 电路调试 11 2.11 测试程序的编写和调试 12 2.11.1 建立一个工程 12 2.11.2 为工程添加源文件 14 2.11.3 KEIL工具栏及仿真介绍 15 2.11.4 按键驱动的编写 18 2.11.5 串口驱动的编写 24 2.11.6 PDIUSBD12读写函数及读ID的实现 28 2.12 本章小结 33 第三章 USB鼠标的实现 1 3.1 USB鼠标工程的建立 1 3.2 USB的断开与连接 1 3.3 USB中断的处理 4 3.4 读取从主机发送到端点0的数据 6 3.5 USB标准请求 12 3.5.1 USB标准设备请求的结构 13 3.5.2 GET_DESCRIPTOR请求 15 3.5.3 SET_ADDRESS请求 16 3.5.6 SET_CONFIGURATION请求 16 3.6 设备描述符的实现 17 3.7 设备描述符的返回 20 3.8 设置地址请求的处理 30 3.9 配置描述符集合的结构 32 3.9.1 配置描述符的结构 32 3.9.2 接口描述符的结构 33 3.9.3 端点描述符的结构 33 3.9.4 HID描述符的结构 34 3.10 配置描述符集合的实现以及返回 35 3.11 字符串及语言ID请求的实现 39 3.12 设置配置请求的实现 45 3.13 报告描述符的结构及实现 48 3.14 报告的返回 54 3.15 Bus Hound工具的简介 57 3.16 本章小结 59 第四章 USB键盘的实现 1 4.1 USB键盘工程的建立 1 4.2 设备描述符的实现 1 4.4 配置描述符集合的实现 2 4.4.1 配置描述符 3 4.4.2 接口描述符 3 4.4.3 HID描述符 3 4.4.4 端点描述 3 4.5 字符串描述符 6 4.6 报告描述符 6 4.7 输入和输出报告的实现 10 4.8 USB键盘实例的测试 13 4.9 再谈USB HID的报告描述符 14 4.10 带鼠标功能的USB键盘(方法一) 16 4.11 带鼠标功能的键盘(方法二) 22 4.12 多媒体USB键盘 29 4.13 本章小结 34 第五章 用户自定义的USB HID设备 1 5.1 MyUsbHid工程的建立 1 5.2 描述符的修改 1 5.3 报告的实现 3 5.4 对用户自定义的USB HID设备的访问 5 5.5 访问HID设备时所用到的相关函数 5 5.5.1 获取HID设备的接口类GUID的函数 5 5.5.2 获取指定类的所有设备信息集合的函数 6 5.5.3 从设备信息集合中获取一个设备接口信息的函数 6 5.5.4 获取指定设备接口详细信息的函数 7 5.5.5 打开设备的函数 8 5.5.6 获取HID设备属性的函数 8 5.5.7 从设备读取数据的函数 9 5.5.8 往设备写数据的函数 9 5.5.9 通过控制端点0读取报告的函数 10 5.5.10 通过控制端点0发送报告的函数 10 5.5.11 关闭设备的函数 10 5.5.12 需要包含的库文件 11 5.6 访问USB HID设备的上位机软件的实现 11 5

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧