STM32自定义HID设备块传输+libusb上位机程序


STM32 自定义HID 设备, 通过快传输接收上位机发来的数据。上位机使用Libusb库函数实现,接口简单。程序中添加了上位机接收数据的接口,USB 设备端的IN 接口也做好了,用户只要将需要发送给HOST的数据添加进去就可以了。博文地址: http://blog.csdn.net/chengwenyang/article/details/51039741
资源截图
代码片段和文件信息
#include 
#include 
#include 
#include 

#include “libusb.h“

#define VID 0x8888
#define PID 0x0088

#define edp2in 0x82
#define edp2out 0x02

int main(void)
{
    libusb_device **devs *dev;
    int ret i;
    ssize_t cnt;
    usb_pro_t usb_pro;
    struct libusb_device_handle *handle = NULL;
    libusb_context *ctx = NULL;

    ret = libusb_init(&ctx);
    if (ret < 0)
        return -1;

    libusb_set_debug(ctx 3);

    cnt = libusb_get_device_list(NULL &devs);
    if (cnt < 0) {
        printf(“no usb dev on bus
“);
        return  -1;
    }

    i = 0;
    while((dev = devs[i++]) != NULL) {

        ret = libusb_get_device_descriptor(dev&desc);
        if (ret < 0) {
            printf(“failed to get device descriptor“);
            goto error;
        }

        if ((desc.idVendor == VID) && (desc.idProduct == PID)) {
            printf(“bLength: 0x%04x
“ desc.bLength);
            printf(“bDescriptorType: 0x%04x
“ desc.bDescriptorType);
            printf(“bcdUSB: 0x%04x
“ desc.bcdUSB);
            printf(“bDeviceClass: 0x%04x
“ desc.bDeviceClass);
            printf(“bDeviceSubClass: 0x%04x
“ desc.bDeviceSubClass);
            printf(“bDeviceProtocol: 0x%04x
“ desc.bDeviceProtocol);
            printf(“bMaxPacketSize0: 0x%04x
“ desc.bMaxPacketSize0);
            printf(“vendor id: 0x%04x
“ desc.idVendor);
            printf(“product id: 0x%04x
“ desc.idProduct);
            printf(“bcdDevice: 0x%04x
“ desc.bcdDevice);
            printf(“iManufacturer: 0x%04x
“ desc.iManufacturer);
            printf(“iProduct: 0x%04x
“ desc.iProduct);
            printf(“iSerialNumber: 0x%04x
“ desc.iSerialNumber);
            printf(“bNumConfigurations: 0x%04x
“ desc.bNumConfigurations);

        }

    }

    handle = libusb_open_device_with_vid_pid(ctx VID PID);

    if (handle == NULL) {
        printf(“cant‘t open device
“);
        goto error;
    } else {
        printf(“open device
“);
    }

    libusb_free_device_list(devs 1);

    if (libusb_kernel_driver_active(handle 0) ==1) {
        printf(“kernel driver active detach it 
“);

        if (libusb_detach_kernel_driver(handle 0) == 0) {
            printf(“detached kernel driver
“);
        }
        else {
            goto error;
        }
    }

    ret = libusb_claim_interface(handle 0);
    if (ret < 0) {
        printf(“can‘t claim interface
“);
        goto error;
    } else {
        printf(“claimed interface
“);
    }

    char data[64];
    int actual_len = 0;
    int didi = 1000;
    for (int i = 0; i< 1000; i++) {
        memset(data 0 sizeof(data));
        /*  receive data from device  */
        /*
        ret = libusb_bulk_transfer(handle edp2in data 64 &actual_len 0);

        if (actual_len = 0) {
            printf(“received nothing
“);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-04-02 11:20  libsub_app
     文件        3584  2016-04-02 12:44  libsub_appmain.c
     文件         469  2016-04-02 12:43  libsub_appmakefile
     目录           0  2016-04-02 11:21  stm32usb_bulk_transfer
     目录           0  2016-04-02 11:21  stm32usb_bulk_transferLibraries
     目录           0  2016-04-02 11:21  stm32usb_bulk_transferLibrariesCMSIS
     文件       51511  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISCMSIS END USER LICENCE AGREEMENT.pdf
     目录           0  2016-04-02 11:21  stm32usb_bulk_transferLibrariesCMSISDevice
     目录           0  2016-04-02 11:21  stm32usb_bulk_transferLibrariesCMSISDeviceST
     目录           0  2016-04-02 11:21  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10x
     目录           0  2016-04-02 11:21  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xInclude
     文件      637870  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xIncludestm32f10x.h
     文件        2220  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xIncludesystem_stm32f10x.h
     文件       34574  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xRelease_Notes.html
     目录           0  2016-04-02 11:21  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSource
     目录           0  2016-04-02 11:21  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplates
     目录           0  2016-04-02 11:21  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesTASKING
     文件        3675  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesTASKINGcstart_thumb2.asm
     目录           0  2016-04-02 11:21  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesTrueSTUDIO
     文件       12739  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesTrueSTUDIOstartup_stm32f10x_cl.s
     文件       12727  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesTrueSTUDIOstartup_stm32f10x_hd.s
     文件       12374  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesTrueSTUDIOstartup_stm32f10x_hd_vl.s
     文件        9961  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesTrueSTUDIOstartup_stm32f10x_ld.s
     文件       10410  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesTrueSTUDIOstartup_stm32f10x_ld_vl.s
     文件       10410  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesTrueSTUDIOstartup_stm32f10x_md.s
     文件       10892  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesTrueSTUDIOstartup_stm32f10x_md_vl.s
     文件       13387  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesTrueSTUDIOstartup_stm32f10x_xl.s
     目录           0  2016-04-02 11:21  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesarm
     文件       15896  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesarmstartup_stm32f10x_cl.s
     文件       15633  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesarmstartup_stm32f10x_hd.s
     文件       15822  2012-03-22 22:44  stm32usb_bulk_transferLibrariesCMSISDeviceSTSTM32F10xSourceTemplatesarmstartup_stm32f10x_hd_vl.s
............此处省略488个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)