USB设备类代码

USB设备类代码
USB定义了用于识别设备功能并基于该功能名义上加载设备驱动程序的类代码信息。该信息包含三个字节,名称分别为Base Class,SubClass和Protocol。(请注意,在本说明中使用“基类”来标识类代码三元组的第一个字节。USB规范中未使用该术语)。设备上可以放置类代码信息的位置有两个,一个位于设备描述符中,另一个位于接口描述符中。某些定义的类代码只允许在设备描述符中使用,其他的类代码可以同时在设备和接口描述符中使用,而某些只能在接口描述符中使用。下表显示了当前定义的一组基类值,其一般用法是什么,
最后更新:2016年6月15日
基类 描述符用法 描述
00h 设备 在接口描述符中使用类信息

01h 接口 音讯

02h 都 通讯和CDC控制

03h 接口 HID(人机界面设备)

05h 接口 物理

06h 接口 图片

07h 接口 打印机

08h 接口 大容量储存

09h 设备 枢纽

0h 接口 CDC数据

0h 接口 智能卡

0天 接口 内容安全

0h 接口 视频

0h 接口 个人保健

10h 接口 音频/视频设备

11h 设备 广告牌设备类别

12h 接口 USB Type-C桥接器类别

直流电 都 诊断装置

0h 接口 无线控制器

EFh 都 杂

h 接口 具体应用

h 都 供应商特定

基本类别00h(设备)
定义此基类以在设备描述符中使用,以指示应从设备中的接口描述符确定类信息。在此基类中有一个类代码定义。所有其他值均保留。
接口描述符中还使用此值指示空类代码三元组。
基类 子类 协议 含义
00h 00h 00h 使用接口描述符中的类代码信息

基类01h(音频)
此基本类别是为符合USB-IF网站上音频设备类别规范的音频设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
01h xxh xxh 音频设备
基本类02h(通信和CDC控制)
此基本类是为符合USB-IF网站上的“通信设备类规范”的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。请注意,通信设备类规范要求在设备描述符中使用某些类代码值(三元组),在接口描述符中使用一些类代码值(三元组)。
基类 子类 协议 含义
02h xxh xxh 通讯设备类
基本类别03h(HID –人机界面设备)
此基本类别是为符合USB-IF网站上的HID设备类别规范的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
03h xxh xxh HID设备类别
基础课05h(物理)
此基本类别是为符合USB-IF网站上的《物理设备类别规范》的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
05h xxh xxh 物理设备类
基本类别06h(静态影像)
此基本类是为符合USB-IF网站上的“成像设备类规范”的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。
基类 子类 协议 含义
06h 01h 01h 静态影像装置
基本类07h(打印机)
此基本类是为符合USB-IF网站上的打印机设备类规范的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
07h xxh xxh 打印机设备
基本类别08h(大量存储)
此基本类别是为符合USB-IF网站上的大容量存储设备类别规范的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
08h xxh xxh 大容量存储器
基础课09h(集线器)
此基本类是为属于USB集线器且符合USB规范中定义的设备定义的。该规范定义了完整的三元组,如下所示。所有其他值均保留。这些类代码只能在设备描述符中使用。
基类 子类 协议 含义
09h 00h 00h 全速hub
01h 带有单个TT的高速集线器
02h 具有多个TT的高速集线器
基本类别0Ah(CDC数据)
此基本类是为符合USB-IF网站上的“通信设备类规范”的设备定义的。该规范定义了可用的SubClass和Protocol值集,保留了超出该规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
0h xxh xxh CDC数据设备
基本类别0Bh(智能卡)
此基本类别是为符合USB-IF网站上的智能卡设备类别规范的设备定义的。该规范定义了可用的SubClass和Protocol值集,保留了超出该规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
0h xxh xxh 智能卡设备
基本类别0Dh(内容安全性)
此基本类别是为符合USB-IF网站上的内容安全设备类别规范的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
0天 00h 00h 内容安全装置
基本类别0Eh(视频)
此基本类别是为符合USB-IF网站上的视频设备类别规范的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
0h xxh xxh 视讯装置
基本类别0Fh(个人医疗保健)
此基本类别是为符合USB-IF网站上的《个人保健设备类别规范》的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码仅应在接口描述符中使用。
基类 子类 协议 含义
0h xxh xxh 个人保健设备
基本类别10h(音频/视频设备)
USB音频/视频(AV)设备类别定义描述了用于与复合设备中嵌入的设备或功能进行通信的方法,这些设备或功能用于处理音频,视频,语音以及所有与图像和声音相关的功能。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
10h 01h
02h
03h 00h 音频/视频设备– AVControl接口
00h 音频/视频设备– AVData视频流接口
00h 音频/视频设备– AVData音频流接口
基本类别11h(广告牌设备)
此基本类别是为符合USB-IF网站上的广告牌设备类别规范的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码只能在设备描述符中使用。
基类 子类 协议 含义
11h 00h 00h 广告牌装置
基本类别12h(USB Type-C桥接设备)
此基本类别是为符合USB-IF网站上的USB Type-C桥接器设备类别规范的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
12h 00h 00h USB Type-C桥接器

基本类DCh(诊断设备)
此基本类是为诊断设备的设备定义的。此类代码可在设备或接口描述符中使用。
跟踪是一种调试形式,其中处理器或系统活动可以在外部实时显示或存储,然后再检索以供应用程序开发人员,应用程序或专门观察系统活动的外部设备查看。
调试或测试(Dfx)设计。这是指提供调试或测试支持(例如,通过测试访问端口(TAP))的逻辑块。
DvC:USB设备上的调试功能(设备功能)
基类 子类 协议 含义
直流电 01h 01h USB2合规性设备。可以在http://www.intel.com/technology/usb/spec.htm上找到此设备的定义
02h 00h 调试目标供应商已定义。 有关更多信息,请参见 http://www.intel.com/content/www/us/en/io/universal-serial-bus/extensible-host-controler-interface-usb-xhci.html。

	01h	GNU远程调试命令集。 有关更多信息,请参见 http://www.intel.com/content/www/us/en/io/universal-serial-bus/extensible-host-controler-interface-usb-xhci.html。

03h	00h	未定义
	01h	供应商在DbC上定义的跟踪协议。
04h	00h	未定义
	01h	供应商在DbC上定义了Dfx协议。
05h	00h	供应商在DvC上通过通用(GP)端点定义的跟踪协议。
	01h	DvC上通用(GP)端点上的GNU协议协议。

http://www.gnu.org/software/gdb/

06h	00h	未定义
	01h	供应商在DvC上定义的Dfx协议。
07h	00h	未定义
	01h	供应商在DvC上定义的跟踪协议。
08h	00h	未定义

基本类别E0h(无线控制器)
此基本类是为作为无线控制器的设备定义的。下表中未显示的值是保留的。这些类代码将在接口描述符中使用,但蓝牙类代码也可以在设备描述符中使用。
基类 子类 协议 含义
0h 01h 01h 蓝牙编程接口。从www.bluetooth.com获取特定信息 。

	02h	UWB无线电控制接口。可以在第8章的无线USB规范中找到对此的定义。
	03h	远程NDIS。可以在以下位置找到信息:http :  //www.microsoft.com/windowsmobile/mobileoperators/default.mspx

	04h	蓝牙AMP控制器。从www.bluetooth.com获取特定信息 。

2h	01h	主机电线适配器控制/数据接口。定义可以在第8章的无线USB规范中找到。
	02h	设备电线适配器控制/数据接口。定义可以在第8章的无线USB规范中找到。
	03h	设备电线适配器同步接口。定义可以在第8章的无线USB规范中找到。

基本类别EFh(其他)
此基类是为其他设备定义定义的。下表中未显示的值是保留的。这些类代码(设备或接口描述符)的使用在下面的每个条目中都有特别的注释。
基类 子类 协议 含义
EFh 01h 01h 活动同步设备。此类代码可在设备或接口描述符中使用。请与Microsoft联系以获取有关此类的更多信息。
02h Palm Sync。此类代码可在设备或接口描述符中使用。
02h 01h 接口关联描述符。在www.usb.org 上提供的接口关联描述符ECN中定义了此类三重代码的用法 。此类代码只能在设备描述符中使用。
02h 电线适配器多功能外设编程接口。定义可以在第8章的无线USB规范中找到。此类代码只能在设备描述符中使用。
03h 01h 基于电缆的关联框架。这在无线USB规范的关联模型附录中定义。此类代码只能在接口描述符中使用。
04h 01h 以太网上的RNDIS。
通过以太网移动设备将主机连接到Internet。该设备在主机上显示为以太网网关设备。
此类代码只能在接口描述符中使用。
02h 通过WiFi的RNDIS。
通过启用WiFi的移动设备将主机连接到Internet。该设备将自己代表主机为802.11兼容的网络设备。
此类代码只能在接口描述符中使用。
03h WiMAX上的RNDIS
通过支持WiMAX的移动设备将主机连接到Internet。该设备在主机上表示为802.16网络设备。
此类代码只能在接口描述符中使用。
04h WWAN上的RNDIS
通过使用移动宽带的设备(例如WWAN(GSM / CDMA))将主机连接到Internet。
此类代码只能在接口描述符中使用。
05h 原始IPv4的RNDIS
通过非以太网移动设备使用原始IPv4将主机连接到Internet。提供原始IPv4(不在以太网数据包中)的设备可以使用此格式代替其他库存类型。
此类代码只能在接口描述符中使用。
06h 用于原始IPv6的RNDIS
使用原始IPv6通过非以太网移动设备将主机连接到Internet。提供原始IPv6(不在以太网数据包中)的设备可以使用此格式代替其他库存类型。
此类代码只能在接口描述符中使用。
07h GPRS的RNDIS
使用设备的蜂窝无线电通过GPRS移动设备将主机连接到Internet
05h 00h USB3视觉控制接口 符合USB3 Vision规范的机器视觉设备。该标准涵盖通常在机器视觉,工业和嵌入式应用中使用的相机和其他相关设备。
参考:http: //visiononline.org/
此类代码只能在接口描述符中使用。
01h USB3 Vision事件接口
02h USB3视觉流接口
06h 01h 步。流传输有效协议,用于内容保护。
02h RAW RAW。流传输有效协议,用于原始内容保护。
07h 01h IAD中的命令界面 DVB通用接口(DVB-CI)规范描述了一种系统,通过该系统,可移动CI条件访问模块(CICAM)在获得适当使用权的情况下,可以对受保护的付费电视内容进行解密,并通过同一接口将其路由回电视接收机以进行显示。 。DVB-CI功能的接口关联将包含用于命令,控制和状态信息的DVB-CI命令接口,它可能包含用于视听数据流的DVB-CI媒体接口,并且还可能包含用于以下目的的CDC EEM接口:提供到CICAM的桥接网络。
参考:https://www.dvb.org/standards/dvb-ci-plus
01h 接口描述符中的命令接口
02h 接口描述符中的媒体接口
基本类FEh(专用)
此基本类别是为符合USB-IF网站上的多个类别规范的设备定义的。该规范定义了可用的子类和协议值集。保留超出该定义规范的值。这些类代码只能在接口描述符中使用。
基类 子类 协议 含义
h 01h 01h 设备固件升级。在www.usb.org上 提供的设备类定义 。

02h	00h	IRDA桥设备。在www.usb.org上 提供的设备类定义 。

03h	00h	USB测试和测量设备。在www.usb.org 上的USB测试和测量类规范中提供了定义 。
	01h	符合www.usb.org上的USBTMC USB488子类规范的USB测试和测量设备。

基本类别FFh(特定于供应商)
定义了此基类,供供应商随意使用。这些类代码可在设备和接口描述符中使用。
基类 子类 协议 含义
h xxh xxh 供应商特定

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: VB(Visual Basic)是一种基于对象的程序设计语言,适用于Windows操作系统平台。USB(Universal Serial Bus)是一种常见的外部设备连接接口,用于在计算机和外部设备之间传输数据。 在VB进行USB通信编程的代码,首先需要引用相应的库文件。一个常用的库文件是WinUSB,它提供了用于USB设备的通信API。 1. 引用WinUSB库文件: ``` Declare Function WinUsb_Initialize Lib "winusb.dll" (ByVal DeviceHandle As IntPtr, ByRef InterfaceHandle As IntPtr) As Boolean Declare Function WinUsb_WritePipe Lib "winusb.dll" (ByVal InterfaceHandle As IntPtr, ByVal PipeID As Byte, ByVal Buffer() As Byte, ByVal BufferLength As Integer, ByRef BytesWritten As Integer, ByVal Overlapped As IntPtr) As Boolean Declare Function WinUsb_ReadPipe Lib "winusb.dll" (ByVal InterfaceHandle As IntPtr, ByVal PipeID As Byte, ByVal Buffer() As Byte, ByVal BufferLength As Integer, ByRef BytesRead As Integer, ByVal Overlapped As IntPtr) As Boolean Declare Function WinUsb_Free Lib "winusb.dll" (ByVal InterfaceHandle As IntPtr) As Boolean Dim DeviceHandle As IntPtr Dim InterfaceHandle As IntPtr ``` 2. 初始化USB设备: ``` Dim guid As Guid = New Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") '替换为实际的设备GUID Dim DeviceClass As New Guid("yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy") '替换为实际的设备GUID DeviceHandle = CreateFile("\\.\USB", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero) WinUsb_Initialize(DeviceHandle, InterfaceHandle) ``` 3. 读取USB设备数据: ``` Dim Buffer(512) As Byte Dim BytesRead As Integer WinUsb_ReadPipe(InterfaceHandle, PipeID, Buffer, Buffer.Length, BytesRead, IntPtr.Zero) '处理读取到的数据 '... ``` 4. 写入USB设备数据: ``` Dim Buffer() As Byte = Encoding.ASCII.GetBytes("Hello, USB!") Dim BytesWritten As Integer WinUsb_WritePipe(InterfaceHandle, PipeID, Buffer, Buffer.Length, BytesWritten, IntPtr.Zero) ``` 5. 关闭USB设备: ``` WinUsb_Free(InterfaceHandle) CloseHandle(DeviceHandle) ``` 以上是一个简单的VB USB通信编程代码示例,可根据实际的USB通信需求进行修改和扩展。 ### 回答2: VB USB通信编程代码可以使用VB.NET编写。 首先,你需要使用VB.NET的SerialPort创建一个串口连接对象。此是用于与USB设备进行通信的关键。在创建对象之前,你需要提供串口的相关参数,例如串口号、波特率、数据位等。以下是一个示例代码: ```vb Imports System.IO.Ports Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Try Dim serialPort As New SerialPort() serialPort.PortName = "COM3" '设置串口号 serialPort.BaudRate = 9600 '设置波特率 serialPort.DataBits = 8 '设置数据位 serialPort.StopBits = StopBits.One '设置停止位 serialPort.Parity = Parity.None '设置奇偶校验位 serialPort.Open() '打开串口 '添加数据接收处理事件 AddHandler serialPort.DataReceived, AddressOf DataReceivedHandler Catch ex As Exception MessageBox.Show("串口连接失败:" & ex.Message) End Try End Sub Private Sub DataReceivedHandler(sender As Object, e As SerialDataReceivedEventArgs) Dim serialPort As SerialPort = CType(sender, SerialPort) Dim data As String = serialPort.ReadExisting() '读取收到的数据 '处理接收到的数据 '... '在界面上显示接收到的数据 Invoke(Sub() TextBox1.AppendText(data)) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim sendText As String = TextBox2.Text serialPort.WriteLine(sendText) '向串口发送数据 End Sub ``` 上述代码在窗体加载时创建了一个SerialPort对象,并设置了串口的相关参数。然后,通过添加DataReceived事件处理程序来处理收到的数据。最后,在按钮点击事件,可以通过调用SerialPort对象的WriteLine方法发送数据。 当然,这只是一个简单的示例代码,具体的情况可能会有所差异。你需要根据你的USB设备的通信规则进行相应的调整和处理。 ### 回答3: VB USB通信编程是指使用Visual Basic语言编写USB通信程序的过程。下面是一个简单的VB USB通信编程代码示例: 首先,我们需要导入System.IO和System.IO.Ports命名空间,以便在程序使用相关和方法。 ```vb Imports System.IO Imports System.IO.Ports ``` 接下来,我们需要定义一个SerialPort对象来处理USB通信: ```vb Dim myPort As New SerialPort ``` 然后,我们可以设置SerialPort对象的一些属性,例如端口名称、波特率、数据位、校验位和停止位等: ```vb myPort.PortName = "COM1" myPort.BaudRate = 9600 myPort.DataBits = 8 myPort.Parity = Parity.None myPort.StopBits = StopBits.One ``` 接着,我们需要打开串口连接: ```vb myPort.Open() ``` 接下来,我们可以使用SerialPort对象的Write方法发送数据: ```vb Dim data As String = "Hello World!" myPort.Write(data) ``` 如果我们想接收USB设备发送的数据,我们可以使用SerialPort对象的DataReceived事件来处理接收到的数据: ```vb Private Sub DataReceivedHandler(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Dim sp As SerialPort = CType(sender, SerialPort) Dim data As String = sp.ReadLine() Console.WriteLine(data) End Sub ``` 最后,我们需要在程序结束时关闭串口连接: ```vb myPort.Close() ``` 以上是一个简单的VB USB通信编程代码示例,你可以根据实际需求进行修改和扩展。请确保你的计算机上已经安装了相应的USB驱动程序,并且正确地连接了USB设备

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值