USB学习笔记(3)—— 小结

看到笔记2,还是2010年的了,时间飞逝啊,抽空把圈圈的书分章节,对照着CDC,HID,仅批量传输之类的协议,看完了,收获不少。说到USB开发,圈圈的书其实讲的不是很透彻,在开始具体实例之前,应该有个总的概括性的讲述,可惜没有,自己总结,如下:

       USB设备的开发,我将其分为三类。

       第一类是USB的标准类设备,比如,HID类(Human Interface Device,包括鼠标,键盘,游戏手柄等),USB Mass Storage类(U盘,移动硬盘等)等,Windows已自带驱动程序(***.sys文件和***.inf文件,前者是设备驱动程序本身,后者是识别这个设备驱动程序文件名和位置的文件),标准系统设备是Windows独占的,用户的应用程序无法访问其驱动程序,同时自带驱动,所以开发者不涉及开发驱动程序和应用程序,只需开发者开发设备端的固件程序,就是开发板单片机的程序部分。

       第二类是用户自定义的HID设备,同样Windows也自带了HID类的设备驱动程序,无需开发者开发(另附:HID设备的数据只能用中断传输和控制传输,若想成为自定义HID设备,只需在报告描述符中,将普通用途页中的用途ID改成0x00,用它来开集合,即可),第一类中的标准系统设备是Windows独占的,用户的应用程序无法访问其驱动程序,而用户自定义的HID设备,Windows自身不会主动访问它们,用户的应用程序通过驱动程序来访问设备,应用程序在VC++或VB或Delphi中开发,主要是调用一些API,包括获取HID设备接口类GUID的HidD_GetHidGuid(),获取指定类所有设备信息集合的SetupDiGetClassDevs(),从设备信息集合中获取一个设备接口信息的SetupDiEnumDeviceInterfaces(),获取指定设备接口详细信息的SetupDiGetInterfaceDetail(),打开设备的CreateFile(),获取HID设备属性的HidD_GetAttributes(),从设备读取数据的ReadFile(),向设备写数据的WriteFile()等。开发出的上位机程序就可控制(写数据)和显示(读数据),自定义的HID设备状态。

       总结为,此类设备,需开发者开发设备端的固件程序,以及上位机的应用程序。

       第三类是用户自定义的USB设备,这样的设备驱动程序就得由用户自行开发了(另附:若想成为自定义的USB设备,理论上只需将设备描述符中的设备类字段改为0xff,即可,但通常不在设备描述符中定义设备的功能,而在接口描述符中的类,子类,协议中定义,而把设备描述中的这3个字段置为0,已看到手头U转串的线的接口描述符中的bInterfaceClass为0xff),Windows就什么都不管了,需开发者开发设备端的固件程序,以及上位机的驱动程序(***.sys文件和***.inf文件,通常用VC++, 和Driver Studio生成,通常生成的代码还需少量的修改,才可正常使用),上位机的应用程序(应用程序同样通过驱动程序访问设备,只是此次的驱动是用户自己开发的)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值