精华内容
下载资源
问答
  • 其实这个东西算是挺无聊...1.商品分类php操作页面:category.php ,当然了这个是后台操作,此文件当然也在admin目录下面。 2.商品分类模板页面:category_info.htm ,此文件在admin/templates目录下。 3.fckeditor的

    其实这个东西算是挺无聊的,不过为了能熟悉Ecshop内部函数的用法,所以做这个实验对以后还是很有帮助滴。

    第一步:我们要找到都需要操作哪些页面。

    1.商品分类php操作页面:category.php ,当然了这个是后台操作,此文件当然也在admin目录下面。

    2.商品分类模板页面:category_info.htm ,此文件在admin/templates目录下。

    3.fckeditor的方法所在页面:admin/includes/lib_main.php

    第二步:进行修改添加编辑器。

    1.查看lib_main.php里面的fckeditor方法。

    fck1

    上面就是fck编辑器的方法,可以直接在category.php里面使用。

    2.修改category.php文件引入编辑器方法。

    fck2

    fck3

    在category.php里面的add和edit操作里面添加create_html_edito。行号仅供参考!

    3.修改category_info.htm模板文件。

    fck4

    替换模板文件里面144行的代码为上图框红的代码

    第三步:进行添加修改操作查看效果。

    fck5
    展开全文
  • get_cat_ID() 根据分类名称获取分类ID ///// get_cat_name() 根据分类ID获取分类名称 用法: 参数:$cat_name 分类名称默认值为"General"。类型为字符型,可选 返回的值:出错时返回0,成功则返回分类...

    get_cat_ID()    根据分类名称获取分类ID   / get_cat_name()    根据分类ID获取分类名称

    用法:<?phpget_cat_ID( $cat_name ) ?>

    参数:$cat_name  分类名称默认值为"General"。类型为字符型,可选

    返回的值:出错时返回0,成功则返回分类ID号,类型为整数

    示例:

    <?php      
        $category_id= get_cat_id('CategoryName');      
       query_posts('cat='.$category_id);      
        if(have_posts()) : while (have_posts()) : the_post();
       the_content();   
        endwhile;endif;  
    ?>  

    get_category_link()   根据分类ID获取分类的链接URL

    用法:<?phpget_category_link( $category_id ) ?>

    参数:$categroy_id 分类ID号  默认值:None,类型为整数,必需

    返回的值:分类URL  字符串型

    示例:

    <?php
        $category_id= get_cat_ID( 'Category Name' );
       $category_link = get_category_link( $category_id );
    ?>
    <a href="<?php echo $category_link;?>" title="Category Name">CategoryName</a>

    the_category() 显示文章所属分类目录的链接。此标签必须在主循环中。

    用法:<?phpthe_category( $separator, $parents ); ?>

    参数:$separator显示在分类目录链接之间的文字或字符。默认以无序列表方式排列分类目录链接。字符串型

             $parents怎样显示子分类目录链接,字符串型,值包括:

            'multiple'——显示父分类与其子分类的链接以展示"父子"关系

            'single'——只显示子分类的链接,用链接文本标出"父子"关系

              默认值为显示子分类链接,无标识文字。

    示例:

    用逗号隔开分类目录

    列出分类目录,(在分类目录数量多于一个的情况下)以逗号作为分隔符。

    <p>This post is in:<?php the_category(', ');?></p> 


    用箭头隔开分类目录

    列出分类目录,以箭头(>)作为分隔符。(使用时请注意,有些访问者可能会将分类>分类这种格式解读为一对具有“父子”关系的分类。)

    <p>Categories: <?phpthe_category(' &gt; ');?></p> 


    single_cat_title()   显示或返回当前页面的分类目录标题。

    对那些显示WordPress标签而非分类目录标题的页面(如"/tag/carceer"),该标签显示或返回标签名称。该标签只能用在WordPress主循环(loop)之外。


    用法:<?phpsingle_cat_title( $prefix, $display ); ?>

    默认用法: <?phpsingle_cat_title('prefix'=>,'display'=>true ); ?>

    参数:

    $prefix  输出时在标题前的文本信息。默认值:None,类型是字符串,可选

    $display 显示标题(TRUE)或返回标题以便用在PHP中(FALSE)。默认值:TRUE,类型是布尔型 可选

    示例:

    下面这个例子在分类目录标题后显示“当前分类:”字样:

    <p><?phpsingle_cat_title('当前分类是');?></p> 

    输出:当前分类是wordpress

    下面这个例子将当前分类目录标题赋值给变量$current_category以用在PHP中。

    <?php $current_category = single_cat_title("",false); ?>

    category_description()  返回用户在当前分类目录所填写的说明信息

    用法:<?phpecho category_description( $category ); ?>

    参数:$category被返回说明信息的分类目录的数值型ID。若用户未指定分类目录,默认为当前分类目录。类型为整型

    示例:

    <div><?php echocategory_description(3);?></div>

    返回结果:WordPress is a favorite blogging tool of mine and I share tipsand tricks for using WordPress here.

     <div><strong><?phpsingle_cat_title('当前分类'); ?>
    </strong>: <?php echocategory_description();?></div>

    返回结果:当前分类WordPress: WordPress is a favorite blogging tool of mineand I share tips and tricks for using WordPress here.

    展开全文
  • 七、USB描述分类

    千次阅读 2018-11-12 23:38:44
    USB描述符有以下几种:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符、HID描述符 1、设备描述符  设备描述描述了USB设备的通用信息。一个USB设备只有一个设备描述符。比较特殊的是, 默认控制...

      USB描述符有以下几种:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符、HID描述符

    1、设备描述符

      设备描述符描述了USB设备的通用信息。一个USB设备只有一个设备描述符。比较特殊的是, 默认控制管道的数据包的长度(也就是USB设备端点0的长度)是在设备描述符中定义的, 而不像其他端点一样是在端点描述符中定义的。

       描述设备速度,走的是USB1.1、USB2.0;设备的PID、VID等信息,设备描述符字段组成如下:

    偏移量

    字段名称

    长度(字节)

    字段值

    意义

    0

    bLength

    1

    数字

    设备描述符的字节数大小

    1

    bDescriptor Type

    1

    常数

    设备描述符类型编号

    2

    bcdUSB

    2

    BCD码

    USB版本号

    4

    bDeviceClass

    1

    USB分配的设备类代码

    5

    bDeviceSubClass

    1

    子类

    USB分配的子类代码

    6

    bDeviceProtocol

    1

    协议

    USB分配的设备协议代码

    7

    BMaxPacketSize0

    1

    数字

    端点0的最大包大小

    8

    idVendor

    2

    ID编号

    厂商编号

    10

    idProduct

    2

    ID编号

    产品编号

    12

    bcdDevice

    2

    BCD码

    设备出厂编号

    14

    iManufacturer

    1

    索引

    描述厂商字符串的索引

    15

    iProduct

    1

    索引

    描述产品字符串的索引

    16

    iSerialNumber

    1

    索引

    描述设备序列号字符串的索引

    17

    bNumConfigurations

    1

    数字

    可能的配置参数

    (1)、bLength

    这是一个以1字节二进制数为内容的字段。 该字段表示整个设备描述符的字节数大小,而整个设备描述符占用了17个字节, 因此bLength的值是固定的, 就是18, 用十六进制表示就是0x12。

    (2)、bDescriptorType

    设备描述符的类型,USB定义的设备描述符的类型编号为常数0x01,因此,该字段的值为固定值0x01。

    (3)、bcdUSB

    BCD码为内容的字段,该字段代表设备所遵循的USB协议的版本号。

    如:USB1.1,其bcdUSB值为0x0110

    USB2.0,其bcdUSB值为0x0200

    一个2字节的数0xABCD, AB为1个字节, CD为另一个字节, 其中AB为版本号的整数部分, C为版本号的第一个小数部分, D为版本号的第二个小数部分。

    (4)、bDeviceClass

    设备类型的代码,值从0x01~0xFE为USB定义的标准设备类,而值为0xFF时表示该设备类型代码是厂商自定义的类。如果设备类型不是在设备描述符中定义的, 则该值为0, 比如人机接口设备 ( HID) 类。

    (5)、bDEviceSubClass

    设备类中的子类类型,和bDeviceClass一样由USB规定和分配,当 bDeviceClass为0时, 此值也为0, 代表该子类类型不在设备描述符中定义。 值为0xFF时, 也代表子类类型是由厂商所定义的。

    (6)、bDeviceProduct

    设备所遵循的协议,该值有USB协议规定,当值为0xFF时,表示该设备采用厂商自己为该类定义的协议。

    (7)、bMaxPacketSize0

    描述了端点0的最大包的大小, 低速设备的bMaxPacketSize0恒为8, 全速设备可以是一般为 8、16、32或64, 即0x08、0x10、0x20或0x40, 而高速设备则为64。

    (8)、idVendor

    USB设备的生产厂商从USB开发者论坛(USB Implementers Forum)获得的ID号。  

    (9)、idProduct

    设备的生产厂商所定义的该设备的产品ID号。

    (10)、bcdDevice

    设备生产厂商来定义, 代表该设备的产品版本号。

    (11)、iMenufacturer

    设备生产厂商的字符串的索引值。值为0则代表没有使用该字段。

    (12)、iProduct

    描述该产品的字符串的索引值。值为0时表示没有使用该字段。

    (13)、iSerialNumber

    设备的序列号的索引值。每个设备都有一个特定的序列号, 可供主机来识别不同的设备。

    (14)、bNumConfigurations

    该设备总共支持的配置描述符的数量。

                                                       Bus hound抓取的设备描述符

    2、配置描述符

      配置描述符用于描述一个USB设备的属性和能力等配置信息。一个USB设备只需要一个配置描述符就可以了。比如一个USB接口的鼠标,其功能仅仅是简单的双向数据中断传输, 并且是总线供电, 因此按照这些要求来填写一个配置描述符即可。但是, 有些设备如果需要具有几种相对独立的配置(但前提是属于 同一种USB设备类), 比如一个USB接口的ISDN, 就可以有2种配置, 一种配置下建立 64 KB/ s 的双向数据交换通道; 而同时可以有另一种 128 KB/ s 的双向数据通道配置。这样, 这个ISDN就可以根据不同的网络情况来自动选择任一种数据交换方式。配置描述符字段组成如下:

    偏移量

    字段名称

    长度(字节)

    字段值

    意义

    0

    bLength

    1

    数字

    设备描述符的字节数大小

    1

    bDescriptor Type

    1

    常数

    配置描述符类型编号

    2

    wTotalLength

    2

    数字

    此配置所返回的所有数据大小

    4

    bNumInterfaces

    1

    数字

    此配置所支持的接口数量

    5

    bConfigurationsValue

    1

    数字

    Set_Configuration命令需要的参数值

    6

    iConfiguration

    1

    索引

    描述改配置的字符串的索引值

    7

    bmAttributes

    1

    位图

    供电模式的选择

    8

    MaxPower

    1

    mA

    设备从总线提取的最大电流

    (1)、bLedgth

    整个配置描述符的长度, 因此bLength是固定的, 值为9, 即0x09, 二进制表示为 00001001。

    (2)、bDescriptorType

    USB给配置描述符分配的类型编号, 值为常数0x02。

    (3)、wTotalLength

    该置所返回的所有描述符(包括配置、接口和端点描述符)的大小总和。

    (4)、bNumInterfaces

    该配置所支持的接口总数。

    (5)、bConfigurationValue

    该字段的值作为参数, 可被Set_Configuration和 Get_Configuration命令来调用, 用于该命令选定这个配置。

    (6)、iConfiguration

    该字段指向描述该配置描述符的字符串。 如果该设备没有用字符串描述该配置, 那么此字段为0。

    (7)、bmAttributes

    该字段1字节二进制数的每一位代表一个固定的含义:

    D7:Reserve,固定为1;

    D6:供电方式的选择, 值为1表示自供电, 值为0表示总线供电;

    D5:远程唤醒功能的选择, 值为1表示支持远程唤醒, 值为0则不支持;

    D4~D0:没有意义, 均把值固定为0。

    (8)、MaxPower

    设备从总线上获取的电流总量。电流值为字段值的两倍,设备可以获取到的最大电流为500mA,所以字段值最大为0xFA;

                                                      Bus hound上抓取的配置描述符

    3、接口描述符

      接口描述符用于描述一个特定接口的属性。接口一般是由一系列端点所组成的集合体,用于实现某种特定的USB的数据传输功能。一般一个USB设备只需具有一个接口。比如,USB移动存储设备中就只有一个用于实现Mass Storage类的接口, 在该接口下使用了批量输入Bulk_IN和批量输出Bulk_OUT 2个非0 端点用于传输文件。接口描述符还可以在配置后加以改变。前面已经提到, 标准的USB设备类型都是在 设备描述符中定义的, 但是有些类是基于接口在接口描述符中定义的, 如HID设备。接口描述符字段组成如下:

    偏移量

    字段名称

    长度(字节)

    字段值

    意义

    0

    bLength

    1

    数字

    设备描述符的字节数大小

    1

    bDescriptor Type

    1

    常数

    接口描述符类型编号

    2

    bInterfaceNumber

    1

    数字

    该接口的编号

    3

    bAlternateSetting

    1

    数字

    备用的接口描述符编号

    4

    bNumENDpoits

    1

    数字

    该接口使用的端点数,不包括端点0

    5

    bInterfaceClass

    1

    接口类型

    6

    bInterfaceSubClass

    1

    子类

    接口子类类型

    7

    bInterface

    1

    协议

    接口遵循的协议

    8

    iInterface

    1

    索引

    描述该接口的字符串索引值

    (1)、bLength

    整个配置描述符的长度,固定为0x09.

    (2)、bDescriptorType

    由USB给配置描述符分配的类型编号, 值为常数0x04。

    (3)、bInterfaceNumber

    接口的编号,如果一个配置拥有N个接口, 那么这些接口都是互不相干的, 每一个接口都有惟一的编号, USB就是通过此字段来识别不同的接口。默认值为0。

    (4)、bAlternateSetting

    USB设备的配置与USB配置描述符是一一对应的, 即一个配置只能有一个配置描述符。USB允许多个接口描述符来描述同一个接口, 而且这些描述符都可以通过命令来切换。这里,此字段就是每一个这类描述符惟一的编号。USB可以通过调用这个字段来切换描述同一个接口的不同描述符。控制传输中可以通过Get_Interface和Set_Interface来获取、设置目前正在使用的描述一个确定接口的接口描述符的编号。

    (5)、bNumEndpoints

    该接口使用的端点总数(除端点0之外)。如果此值为0, 则意味着该接口只使用了端点0。

    (6)、bInterfaceClass

    该接口所属的类别。这个类别编号由USB来分配。当值为0xFF时, 表示该接口是厂商所定义的接口类型。而值0保留。

    (7)、bInterfaceSubClass

    接口所属的类别中的子类类型。这个子类编号也由USB分配。同bInterfaceClass字段一样, 当其值为0xFF时代表该接口由厂商自己所定义。而值0保留。

    (8)、bInterfaceProtocol

    此接口类所遵循的类的协议。因而, 该字段的值跟bInterfaceClass和bInterfaceSubClass字段是相关的。其值从1~0xFE由USB分配, 代表不同标准的设备类的协议。 当值为0时, 表示该接口不遵循任何类协议; 而值为0xFF时, 表示该接口应用了厂商自定义的类协议。

    (9)、iInterface

    指向字符串描述符中相应的字符串内容, 用于描述该接口。 如果设备没有启用字符串描述符 , 则该值为0。

                                                      Bus hound中抓取到的接口描述符

    4、端点描述符

    端点描述符用于描述接口所使用的非0端点的属性, 包括输入/输出方向、端点号和端点容量即包的大小等。端点描述符字段组成如下:

    偏移量

    字段名称

    长度(字节)

    字段值

    意义

    0

    bLength

    1

    数字

    设备描述符的字节数大小

    1

    bDescriptorType

    1

    常数

    端点描述符类型编号

    2

    bEndpointAddress

    1

    端点

    端点地址及输入输出属性

    3

    bmAttributes

    1

    位图

    端点传输类型属性

    4

    wMaxPacketSize

    2

    数字

    端点收、发的最大包的大小

    5

    bIterval

    1

    数字

    主机查询端点的时间间隔

    (1)、bLength

    这个端点描述符的长度。

    (2)、bDescriptorType

    USB为端点描述符分配的类型编号, 因此, 此字段的值固定, 即为0x05。

    (3)、bEndpointAddress

    D7 端点方向

    0       OUT端点

    1       IN端点

    D6~D4     保留

    D3~D0     端点编号

    (4)、bmAttributes

    D5~D4 用途

    00     数据端点

    01     反馈端点

    10     隐式反馈数据端点

    11     保留

    D3~D2 同步类型

    00     非同步

    01     异步

    10     自适应

    11     同步

    D1~D0 传输类型

    00     控制传输

    01     同步传输

    10     块传输

    11     中断传输

    如果该端点不是同步端点,D5~D2保留且必须置0。

    (5)、wMaxPacketSize

    该端点最大包的大小。其中D10~D0位共11位为有效内容。在USB协议1 .1中D15~D11位保留, 值为0, 且最大包的大小范围为0~1023。

    (6)、bIterval

    主机轮询设备的周期。在USB协议1.1中, 对于中断端点, 该字段的值为1~255,时间单位ms,因此假设值为250, 则表示时间间隔为250ms; 对于同步端点, 该字段值固定为1 ; 而批量端点和控制端点则忽略该字段 ,值无效。

                                                     Bus hound中抓取的端点描述符

    5、字符串描述符

      字符串描述符是一个可选的描述符,长度不固定。字符串描述符字段组成如下:

    偏移量

    字段名称

    长度(字节)

    字段值

    意义

    0

    bLength

    1

    数字

    设备描述符的字节数大小

    1

    bDescriptorType

    1

    常数

    字符串描述符类型编号

    2

    bString

    N

    数字

    UNICODE编码的字符串

    (1)、bLength

    整个字符串描述符的长度。

    (2)、bDescriptorType

    USB为端点描述符分配的类型编号, 因此, 此字段的值固定, 即为0x03。

    (3)、bString

    一个以UNICODE编码的字符为内容的字符串。

                                                       Bus hound抓取的字符串描述符

    7、HID描述符

             bLength: 描述符长度。

             bDescriptorType:描述符类型,HID描述符的类型为0x21。

             bcdHID: 所遵循的HID协议版本。

             bCountryCode: 国家代码。

             bNumDescriptors: 下级描述符数量,通常至少需要一个报告描述符。

             bDescriptorType: 下级描述符类型,例如报告描述符。

             wDescriptorLength: 下级描述符长度。

                                                     Bus hound中抓取的HID描述符

    总的来说,描述符的作用就是,让主机知道你是什么设备信息(PID、VID、序列号...),跑的是那种速度的协议(USB1.0、USB1.1、USB2.0...),然后给你分配相应的地址。

    如有错误或者疑问,请及时提出。谢谢!!!

                        上一篇                                                                                 下一篇

    展开全文
  • STM32 USB设备描述符、配置描述符、端点描述符含义 copyfromhttps://www.cnblogs.com/huanjun/p/9605872.html 查了一整天的资料,自己把不懂的全部试了一遍 一下是程序以及注释 /* USB设备描述符*/ const uint8...

    USB描述符的分类与介绍

    USB的符述符分为几类?有人可能会答:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符等。但这里说的不是这样的。上面的几类描述符属于USB标准描述符。另外还有HID描述符和Hub描述符。所以分类是这样的:
    1. 标准描述符
                1) 设备描述符
                 2) 配置描述符
                 3) 字符串描述符
                 4) 接口描述符
                 5) 端点描述符
                 6) 设备限定描述符
                 7) 其他速率配置描述符
    2. HID描述符
    3. Hub描述符

    1 标准描述符

    标准描述符是指一组设备描述符,包括设备描述符、配置描述符、字符串描述符、接口描述符、端点描述符、设备限定描述符和其他速率配置描述符。这七种 描述符具有类似的格式,比如说它们的第一个字段都是bLength,第二个字段都是bDescriptorType。七种描述符在使用时以 bDescriptorType字段来区分。描述符类型与对应的bDescriptorType字段值对应关系为:

     1.1 设备描述符

    设备描述符描述的是设备的整体信息,与设备本身一一对应,一个设备只能有一个设备描述符。在主机对USB设备枚举的过程中,首先要做的就是获取设备描述符,以对设备有一个整体的了解。
    设备描述符由14个字段组成,总长度18字节:

     这些字段都有一个小写字母表示的前缀,它们所表示的意思如下:
     b 表一个字节,=8bits;
     w 表一个字,=16bits;
     bm 表按位寻址;
     bcd 用BCD码表示;
     i 表索引值
     id 表标识码
    各字段含义:
     bLength: 表示描述符的长度,对于设备描述符来说,其值为18,即0x12。
     bDescriptorType: 描述符类型,对应表1中的值,设备描述符为0x01。
     bcdUSB:该设备遵循的USB版本号,以BCD码表示,USB1.1为0x0101,USB2.0为0x0200。
     bDeviceClass:该设备所属的标准设备类,USB协议中对常见的设备进行了分类。该字段值为0x01~0xFE时,表示是USB协议中已定义的设备类,常用的HID设备类编号为0x03,其它设备类编号参:http://www.usb.org/developers/defined_class
     bDeviceProtocol:用于表示USB设备类所采用的设备类协议,其值和bDeviceClass和bDeviceSubClass有关。当此 字段为0时,表示不使用任何设备类协议。如果该USB设备属于某个设备类和设备子类,则应该继续指明所采用的设备类协议。当该字段为0xFF时,表明设备 类协议由供应商自定义。
     bMaxPacketSize0:用于表示在USB设备中,端点0所支持最大数据包的长度,它以字节为单位。对于低速USB设 备,bMaxPacketSize0为8;对于全速USB设备,bMaxPacketSize0为8、16、32、64;对于高速USB设 备,bMaxPacketSize0为64。
     IdVendor:用于表示USB设备供应商的ID。USB组织中规定每种产品都必须包含一个供应商ID,这样可以使主机加载合适的驱动程序。
     idProduct:用于表示USB产品的ID,由设备供应商提供。idProduct用于表示特定的USB设备,在USB设备上电的时候可以帮助USB主机选择合适的驱动程序。
     bcdDevice:用于表示USB设备的版本号,它以BCD码的形式表示。一般来说bcdDevcie由设备供应商指定,在USB设备上电的时候可以帮助USB主机选择合适的驱动程序。
     iManufacturer:用于表示供应商字符串描述符的索引值。具体字符串的内容在后面字符串描述符中定义。如果没有供应商字符串,可以置0。

    这里应该还有一个 iProduct 
     iSerialNumber:用于表示设备序列号字符串描述符的索引值,如果没有,可以置为0。

     bNumConfigurations:用于表示该USB设备所支持的配置数。

    by louis: 

    结合stm32 的usb 设备描述符:

    /* USB Standard Device Descriptor */
    const u8 Joystick_DeviceDescriptor[JOYSTICK_SIZ_DEVICE_DESC] =
      {
        0x12,                       /*bLength */
        USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
        0x00,                       /*bcdUSB */
        0x02,
        0x00,                       /*bDeviceClass*/
        0x00,                       /*bDeviceSubClass*/
        0x00,                       /*bDeviceProtocol*/
        0x40,                       /*bMaxPacketSize40*/
        0x11,                       /*idVendor (0x1234)*/
        0x11,
        0x11,                       /*idProduct = 0x4321*/
        0x11,
        0x00,                       /*bcdDevice rel. 2.00*/
        0x02,
        1,                          /*Index of string descriptor describing
                                                  manufacturer */
        2,                          /*Index of string descriptor describing
                                                 product*/
        3,                          /*Index of string descriptor describing the
                                                 device serial number */
        0x01                        /*bNumConfigurations*/
      }
      ; /* Joystick_DeviceDescriptor */

    bLength : 描述符大小.固定为0x12.
    bDescriptorType : 设备描述符类型.固定为0x01.
    bcdUSB : USB 规范发布号.表示了本设备能适用于那种协议,如2.0=0200,1.1=0110等.

    bDeviceClass : 类型代码(由USB指定)。当它的值是0时,表示所有接口在配置描述符里,并且所有接口是独立的。当它的值是1到FEH时,表示不同的接口关联的。当它的值是FFH时,它是厂商自己定义的.

    bDeviceSubClass : 子类型代码(由USB分配).如果bDeviceClass值是0,一定要设置为0.其它情况就跟据USB-IF组织定义的编码. (louis:这两项如果是在复合设备下,就会和一般的单一设备不太一样了)

    bDeviceProtocol : 协议代码(由USB分配).如果使用USB-IF组织定义的协议,就需要设置这里的值,否则直接设置为0。如果厂商自己定义的可以设置为FFH.

    bMaxPacketSize0 : 端点0最大分组大小(只有8,16,32,64有效).

    idVendor : 供应商ID(由USB分配).

    idProduct : 产品ID(由厂商分配).由供应商ID和产品ID,就可以让操作系统加载不同的驱动程序.

    bcdDevice : 设备出产编码.由厂家自行设置.

    iManufacturer : 厂商描述符字符串索引.索引到对应的字符串描述符. 为0则表示没有.

    iProduct : :产品描述符字符串索引.同上.
    iSerialNumber : 设备序列号字符串索引.同上.

    bNumConfigurations : 可能的配置数.指配置字符串的个数

     

    iManufacturer  之前的还算好理解。 

    iManufacturer ,iProduct,和 iSerialNumber ,这里的值是 1,2,3 是什么含义?

    看看下面的定义,这个是 字符串描述符。

    他们在 
    ONE_DESCRIPTOR String_Descriptor[4] =
      {
        {(u8*)Joystick_StringLangID, JOYSTICK_SIZ_STRING_LANGID},
        {(u8*)Joystick_StringVendor, JOYSTICK_SIZ_STRING_VENDOR},
        {(u8*)Joystick_StringProduct, JOYSTICK_SIZ_STRING_PRODUCT},
        {(u8*)Joystick_StringSerial, JOYSTICK_SIZ_STRING_SERIAL}
      };

    里面被引用,我理解的 这个 1 ,2,3,这三个值就这三个字符串在数组中的索引。

    /* USB String Descriptors (optional) */
    const u8 Joystick_StringLangID[JOYSTICK_SIZ_STRING_LANGID] =
      {
        JOYSTICK_SIZ_STRING_LANGID,
        USB_STRING_DESCRIPTOR_TYPE,
        0x09,
        0x04
      }
      ; /* LangID = 0x0409: U.S. English */
    
    const u8 Joystick_StringVendor[JOYSTICK_SIZ_STRING_VENDOR] =
      {
        JOYSTICK_SIZ_STRING_VENDOR, /* Size of Vendor string */
        USB_STRING_DESCRIPTOR_TYPE,  /* bDescriptorType*/
        /* Manufacturer: "STMicroelectronics" */
        'S', 0, 'T', 0, 'M', 0, 'i', 0, 'c', 0, 'r', 0, 'o', 0, 'e', 0,
        'l', 0, 'e', 0, 'c', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0, 'i', 0,
        'c', 0, 's', 0
      };
    
    const u8 Joystick_StringProduct[JOYSTICK_SIZ_STRING_PRODUCT] =
      {
        JOYSTICK_SIZ_STRING_PRODUCT,          /* bLength */
        USB_STRING_DESCRIPTOR_TYPE,        /* bDescriptorType */
        'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0, ' ', 0, 'J', 0,
        'o', 0, 'y', 0, 's', 0, 't', 0, 'i', 0, 'c', 0, 'k', 0
      };
    u8 Joystick_StringSerial[JOYSTICK_SIZ_STRING_SERIAL] =
      {
        JOYSTICK_SIZ_STRING_SERIAL,           /* bLength */
        USB_STRING_DESCRIPTOR_TYPE,        /* bDescriptorType */
        'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0, '1', 0, '0', 0
      };

     

     

     

    1.2 配置描述符

    一个USB设备可以有多种配置,不同的配置使设备工作在不同的状态下,每个配置必须有一个配置描述符。其格式包括8个字段,共9字节。

     各个字段含义:
     bLength:用于表示配置描述符的长度,固定为9个字节,即0x09。
     bDescriptorType:用于表示配置描述符的类型值,固定为0x02。
     wTotalLength:用于表示配置信息的总长度,包括配置描述符、接口描述符、端点描述符长度的总和。
     bNumInterfaces:用于表示配置所支持的接口数。一般来说,USB设备的接口至少有一个,因此其最小值为1。
     bConfigurationValue:用于表示USB设备的配置值。
     iConfiguration:用于指出配置字符串描述符的索引值。具体字符串的内容在后面字符串描述符中定义。如果没有配置字符串,可以置为0。
     bmAttributes:用于表示USB设备特性。bmAttributes是接位寻址的,第6位置1表示使用总线电源;第5位置1表示支持远程唤醒功能;该字段其他位均保留,一般来说,第0~4位置0即可,第7位置1即可。
     bMaxPower:用于表示USB设备运行时所需要消耗的总线电流,单位以2mA为基准。USB设备可以从USB总线上获得最大的电流为500mA,因此bMaxPower字段的最大值可以设置为250。

    by louis:配置描述符的 第一段。

    bNumInterfaces: 下面的接口描述部分,有几个就是几。

    bConfigurationValue: 当使用SetConfiguration和GetConfiguration请求时所指定的配置索引值。

    bConfigurationValue:每个配置都有一个标识值。 看样子这个解释更让人容易理解。 暂时理解为这个配置的唯一标识。

    iConfiguration: 描述配置的   字符串描述符索引。

     /***************配置描述符***********************/
     0x09,		//bLength字段
     USB_CONFIGURATION_DESCRIPTOR_TYPE,		//bDescriptorType字段
     //wTotalLength字段
     JOYSTICK_SIZ_CONFIG_DESC,
     /* wTotalLength: Bytes returned    这个是两字节长度的,后面一个字节就为0了?*/
     0x00,
     
     0x01,	//bNumInterfaces字段
     0x01,	//bConfiguration字段
     0x00,	//iConfigurationz字段
     0x80,	//bmAttributes字段
     0xC8,	//bMaxPower字段

     

    1.3 字符串描述符

    在USB协议中字符串描述符是可选的。字符串描述符用于保存一些供应商名称、产品序列号等文本信息。它的长度是不固定的,随字符串的数量和信息的长度变化而变化。其格式如下:

     各字段含义:
     bLength:字符串描述符的长度,其值应为N+2。
     bDescriptorType:字符串描述符的类型值,为0x03。
     bString:UNICODE编码的字符串。

     

    1.4 接口描述符

    接口是端点的集合,负责完成USB的特定功能,例如数据的输入输出。接口描述符用于描述一个接口,包含了接口的特性,如端点个数,所属设备类和子类等。它有9个字段,共9字节。其格式如下:

    by louis:

     /*******************第一个接口描述符*********************/
     0x09,	//bLength字段
     0x04,	//bDescriptorType字段
     0x00,	//bInterfaceNumber字段 这个是第一个接口,所以是0, 第二个接口的是1
     0x00,	//bAlternateSetting字段
     0x02,	//bNumEndpoints字段    这个接口使用的端点数,为啥是两个?
    	// 参考 Device Class Definition for Human Interface  Devices (HID)   下面的三个参数决定了这个接口是个键盘
     0x03,	//bInterfaceClass字段       0x03   人机接口类(HID)  这还不意味着是键盘,只是表示是HID
     0x01,	//bInterfaceSubClass字段    0x01  0  No Subclass    1  Boot Interface Subclass   这个只能是 0或者1
     0x01,	//bInterfaceProtocol字段     Protocol Code  Description    0=None ;1=Keyboard  2=Mouse     3 - 255=Reserved 
     0x00,	//iInterface: 描述该接口的字符串描述符的索引   

    后面还有后续的描述符,参考:

    https://blog.csdn.net/tanjiaqi2554/article/details/78440726

    https://blog.csdn.net/qq_16777851/article/details/85222030

    设备  配置  接口 端点的关系。。

     

    关于USBHID协议以及鼠标键盘描述符的解释

    https://blog.csdn.net/jiujiujiuqiuqiuqiu/article/details/47277685

     

     

     

    STM32的USB例程JoyStickMouse改成自定义HID设备

    https://blog.csdn.net/chiqingjiao7503/article/details/86696875

    USB键盘数据解析

    https://blog.csdn.net/weixin_30348519/article/details/96396583

     

     

     

    五、端点描述符(endpoint)
    用于接口的每个端点都有自己的描述符。 此描述符包含主机确定每个端点的带宽要求所需的信息。 始终返回端点描述符作为GetDescriptor(配置)请求返回的配置信息的一部分。 无法使用GetDescriptor()或SetDescriptor()请求直接访问端点描述符。 端点零永远不会有端点描述符。

    表9-13显示了标准端点描述。

    展开全文
  • 安全漏洞的分类描述与解决方案

    千次阅读 2018-05-21 22:03:06
    漏洞列表漏洞描述问题类型风险等级解决方案SQL注入漏洞主要是SQL注入漏洞,对用户提交CGI参数数据未做充分检查过滤,用户提交的数据可能会被用来构造访问后台数据库的SQL指令,从而非授权操作后台的数据库,导致敏感...
  • 指定网页中,某个关键词出现的次数除以该网页长度称为该关键词在此网页中的词频。对新闻类网页,存在一组的关键词。因此,每个新闻页都存在一组词频,称为该新闻网页的特征向量。 设两个新闻网页的特征向量分别为...
  • 采集 淘宝产品描述信息 分类: PHP2009-12-16 14:48 921人阅读 评论(1) 收藏 举报 产品javascripturl 昨天采集淘宝的一些产品信息时遇到一个问题:  在采集产品描述信息时显示为:”加载中.....
  • 我们提出了三种方法引入这种描述: 模板法——对每个标签静态地指定一个描述; 抽取法——对每个标签在输入文本中抽取一段文字作为描述; 生成法——动态地根据输入的文本为每个标签生成一段描述。 使用这种技术,...
  • zen cart产品分类产品管理

    千次阅读 2011-05-07 20:02:00
    zen cart产品分类产品管理,产品目录管理,产品分类管理,产品管理,产品属性
  • Excel中如何求满足条件的最大值,或分类求最大值公式。使用这个方法,可以根据你的汉语描述自动生成Excel公式。 地址:http://www.excelfb.com/ 点击:Excel自动写公式工具(根据汉字描述写公式,支持合并单元格...
  • 调用wordpress指定分类文章2种方法

    千次阅读 2014-08-08 20:53:50
    调用wordpress指定分类文章第一种方法 " rel="bookmark" title=""> 调用wordpress指定分类文章第二种方法  wp_list_categories('include=11&title_li=&style=none'); ?>  //输出 ID 为11的分类...
  • R语言描述统计

    2019-11-07 21:37:50
    文章目录@[toc]连续变量集中趋势离散趋势分布特征R操作分类变量单分类变量双分类变量SPSS格式 连续变量 连续变量的描述统计包括集中趋势、离散趋势、分布特征 集中趋势 集中趋势表示的是数据分布的中心位置,它在...
  • USB描述符有设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符。我们先学会每个描述符的细节,我会写的非常详细且简洁,后面在学习USB枚举的时候会通过抓...
  • 汽车电子产品分类

    千次阅读 2012-02-13 21:29:44
    随着汽车工业的发展和消费者不断提高的期望,使得各家厂商更加注重提高汽车安全性、减低能耗、改善舒适性和增加娱乐及辅助功能,以提高汽车产品的竞争力。在这个过程中汽车电子化的程度越来越高,电子模块也越来越多...
  • [BT_product]蓝牙产品分类

    千次阅读 2015-07-11 00:24:44
    问题描述:对蓝牙进行概要的了解----蓝牙产品分类。  蓝牙产品所有分类: • Bluetooth End Product:蓝牙End产品 • Bluetooth Host Subsystem Product:蓝牙Host子系统产品 • Bluetooth Controller Subsystem ...
  •  这篇文章主要讲两个事情,一个就是设计模式的分类,另外一个就是对于常见的设计模式的描述。   设计模式的分类: 设计模式可以分为三大类,分别是创建型设计模式、行为型设计模式以及结构型设计模式。 ...
  • 产品描述 如何进行垃圾分类已经成为居民生活的灵魂拷问,然而AI在垃圾分类的应用可以成为居民的得力助手。 针对目前业务需求,我们设计一款APP,来支撑我们的业务需求,主要提供文本,语音,图片分类功能。AI智能...
  • 数据库的分类产品相关介绍

    千次阅读 2019-05-17 16:28:25
    数据库的概述 使用数据库的优点 数据库的种类 ...而不同的数据库是按不同的数据结构来联系和...常用非关系型数据库产品介绍 Memcached(key-value) Redis(key-value) MongoDB(Document-Oriented)
  • 说到网购朋友最喜欢去的店铺,那...手机淘宝店铺描述怎么写最好 移动端店铺描述写法  淘宝开店要注意哪些?    第一步,准备投入。  网上开店需要一定的投入准备,主要包括硬件和软件两部分。硬件包括可以...
  • USB 描述符详解

    2015-06-29 22:14:13
    USB描述符的分类与介绍 USB的符述符分为几类?有人可能会答:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符等。但这里说的不是这样的。上面的几类描述符属于USB标准描述符。另外还有HID描述符和...
  • 一、段描述符的分类 在上一篇博文中已经说过,为了使用段,我们必须要创建段描述符。80X86中有各种各样的段描述符,下图展示了它们的分类。 看了上图,你也许会说:天啊,怎么这么多段描述符啊!我可怎么记住呢...
  • 测试技术描述

    千次阅读 2020-08-11 21:24:16
    简要描述 验收测试 基于最终用户/客户规约的最终测试,或基于最终用户/客户使用一段时间后进行的测试 即兴测试 与探索测试相似,但是通常值测试人员在测试以前对软件有较深的理解 α测试 当开发接近结束的...
  • 一个商品分类表,一个产品详情表...编号,名字,描述,价格,库存,分类ID,二级分类ID,文件名; 商品分类表 编号,名字,父类ID 其中商品分类表中添加的分类要在产品详情表中展示这个功能怎么实现?拜托各位大神了。
  • 如果要使用聚类分析算法对一堆文本分类,关键要解决这几个问题: 如何衡量两个对象是否相似 算法的性能怎么度量 如何确定分类的个数或聚类结束的条件 选择哪种分类算法 下面就带着这几个问题,以我工作中的一个...
  • eCongnition中NN分类和规则分类理解

    千次阅读 2016-07-21 20:52:08
    eCongnition中NN分类和规则分类理解
  • HOG特征描述

    千次阅读 2014-06-10 21:25:35
    首先我们来了解一下HOG特征描述子...HOG特征描述子(HOG descriptors)是由Navneet Dalal和 Bill Triggs在2005年的一篇介绍行人检测方法的论文提到的特征描述子(论文以及演讲可参见参考资料1、2)。 其主要思想
  • 图像分类

    万次阅读 多人点赞 2018-01-21 15:31:47
    图像物体分类与检测算法综述 转自《计算机学报》 目录 图像物体分类与检测算法综述 目录 图像物体分类与检测概述 物体分类与检测的难点与挑战 物体分类与检测数据库 物体分类与检测发展历程 ...
  • 贝叶斯分类算法

    千次阅读 多人点赞 2018-07-31 16:09:12
    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。这篇文章我尽可能用直白的话语总结一下我们学习会上讲到...
  • 分类

    万次阅读 多人点赞 2018-09-21 21:23:10
    分类器的作用:常规任务是利用给定的类别、已知的训练数据来学习分类规则和分类器,然后对未知数据进行分类(或预测)。逻辑回归(logistics)、SVM等常用于解决二分类问题,对于多分类问题(multi-class ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 261,723
精华内容 104,689
关键字:

产品分类描述