电商是干什么工作的,长沙优化网站技巧,wordpress提示安装,设置数据库字符集为utf8一#xff1a;下载libusb文件
下载最新的库的下载网站#xff1a;https://libusb.info/
下载#xff1a; 解压后目录如下#xff1a; 二#xff1a;库文件添加QT中
根据自己的编译器选择库#xff1a; ①将头文件中添加libusb.h
②源文件中添加libusb-1.0.lib ③添加…一下载libusb文件
下载最新的库的下载网站https://libusb.info/
下载 解压后目录如下 二库文件添加QT中
根据自己的编译器选择库 ①将头文件中添加libusb.h
②源文件中添加libusb-1.0.lib ③添加库文件 三编译工程
添加库后直接编译不报错即为成功
四example
参考例程中的调用方法 /*
* Test suite program based of libusb-0.1-compat testlibusb
* Copyright (c) 2013 Nathan Hjelm hjelmnmac.ccom
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/#include stdio.h
#include string.h
#include libusb.hint verbose 0;static void print_endpoint_comp(const struct libusb_ss_endpoint_companion_descriptor *ep_comp)
{printf( USB 3.0 Endpoint Companion:\n);printf( bMaxBurst: %u\n, ep_comp-bMaxBurst);printf( bmAttributes: %02xh\n, ep_comp-bmAttributes);printf( wBytesPerInterval: %u\n, ep_comp-wBytesPerInterval);
}static void print_endpoint(const struct libusb_endpoint_descriptor *endpoint)
{int i, ret;printf( Endpoint:\n);printf( bEndpointAddress: %02xh\n, endpoint-bEndpointAddress);printf( bmAttributes: %02xh\n, endpoint-bmAttributes);printf( wMaxPacketSize: %u\n, endpoint-wMaxPacketSize);printf( bInterval: %u\n, endpoint-bInterval);printf( bRefresh: %u\n, endpoint-bRefresh);printf( bSynchAddress: %u\n, endpoint-bSynchAddress);for (i 0; i endpoint-extra_length;) {if (LIBUSB_DT_SS_ENDPOINT_COMPANION endpoint-extra[i 1]) {struct libusb_ss_endpoint_companion_descriptor *ep_comp;ret libusb_get_ss_endpoint_companion_descriptor(NULL, endpoint, ep_comp);if (LIBUSB_SUCCESS ! ret)continue;print_endpoint_comp(ep_comp);libusb_free_ss_endpoint_companion_descriptor(ep_comp);}i endpoint-extra[i];}
}static void print_altsetting(const struct libusb_interface_descriptor *interface)
{uint8_t i;printf( Interface:\n);printf( bInterfaceNumber: %u\n, interface-bInterfaceNumber);printf( bAlternateSetting: %u\n, interface-bAlternateSetting);printf( bNumEndpoints: %u\n, interface-bNumEndpoints);printf( bInterfaceClass: %u\n, interface-bInterfaceClass);printf( bInterfaceSubClass: %u\n, interface-bInterfaceSubClass);printf( bInterfaceProtocol: %u\n, interface-bInterfaceProtocol);printf( iInterface: %u\n, interface-iInterface);for (i 0; i interface-bNumEndpoints; i)print_endpoint(interface-endpoint[i]);
}static void print_2_0_ext_cap(struct libusb_usb_2_0_extension_descriptor *usb_2_0_ext_cap)
{printf( USB 2.0 Extension Capabilities:\n);printf( bDevCapabilityType: %u\n, usb_2_0_ext_cap-bDevCapabilityType);printf( bmAttributes: %08xh\n, usb_2_0_ext_cap-bmAttributes);
}static void print_ss_usb_cap(struct libusb_ss_usb_device_capability_descriptor *ss_usb_cap)
{printf( USB 3.0 Capabilities:\n);printf( bDevCapabilityType: %u\n, ss_usb_cap-bDevCapabilityType);printf( bmAttributes: %02xh\n, ss_usb_cap-bmAttributes);printf( wSpeedSupported: %u\n, ss_usb_cap-wSpeedSupported);printf( bFunctionalitySupport: %u\n, ss_usb_cap-bFunctionalitySupport);printf( bU1devExitLat: %u\n, ss_usb_cap-bU1DevExitLat);printf( bU2devExitLat: %u\n, ss_usb_cap-bU2DevExitLat);
}static void print_bos(libusb_device_handle *handle)
{struct libusb_bos_descriptor *bos;uint8_t i;int ret;ret libusb_get_bos_descriptor(handle, bos);if (ret 0)return;printf( Binary Object Store (BOS):\n);printf( wTotalLength: %u\n, bos-wTotalLength);printf( bNumDeviceCaps: %u\n, bos-bNumDeviceCaps);for (i 0; i bos-bNumDeviceCaps; i) {struct libusb_bos_dev_capability_descriptor *dev_cap bos-dev_capability[i];if (dev_cap-bDevCapabilityType LIBUSB_BT_USB_2_0_EXTENSION) {struct libusb_usb_2_0_extension_descriptor *usb_2_0_extension;ret libusb_get_usb_2_0_extension_descriptor(NULL, dev_cap, usb_2_0_extension);if (ret 0)return;print_2_0_ext_cap(usb_2_0_extension);libusb_free_usb_2_0_extension_descriptor(usb_2_0_extension);} else if (dev_cap-bDevCapabilityType LIBUSB_BT_SS_USB_DEVICE_CAPABILITY) {struct libusb_ss_usb_device_capability_descriptor *ss_dev_cap;ret libusb_get_ss_usb_device_capability_descriptor(NULL, dev_cap, ss_dev_cap);if (ret 0)return;print_ss_usb_cap(ss_dev_cap);libusb_free_ss_usb_device_capability_descriptor(ss_dev_cap);}}libusb_free_bos_descriptor(bos);
}static void print_interface(const struct libusb_interface *interface)
{int i;for (i 0; i interface-num_altsetting; i)print_altsetting(interface-altsetting[i]);
}static void print_configuration(struct libusb_config_descriptor *config)
{uint8_t i;printf( Configuration:\n);printf( wTotalLength: %u\n, config-wTotalLength);printf( bNumInterfaces: %u\n, config-bNumInterfaces);printf( bConfigurationValue: %u\n, config-bConfigurationValue);printf( iConfiguration: %u\n, config-iConfiguration);printf( bmAttributes: %02xh\n, config-bmAttributes);printf( MaxPower: %u\n, config-MaxPower);for (i 0; i config-bNumInterfaces; i)print_interface(config-interface[i]);
}static void print_device(libusb_device *dev, libusb_device_handle *handle)
{struct libusb_device_descriptor desc;unsigned char string[256];const char *speed;int ret;uint8_t i;switch (libusb_get_device_speed(dev)) {case LIBUSB_SPEED_LOW: speed 1.5M; break;case LIBUSB_SPEED_FULL: speed 12M; break;case LIBUSB_SPEED_HIGH: speed 480M; break;case LIBUSB_SPEED_SUPER: speed 5G; break;case LIBUSB_SPEED_SUPER_PLUS: speed 10G; break;default: speed Unknown;}ret libusb_get_device_descriptor(dev, desc);if (ret 0) {fprintf(stderr, failed to get device descriptor);return;}printf(Dev (bus %u, device %u): %04X - %04X speed: %s\n,libusb_get_bus_number(dev), libusb_get_device_address(dev),desc.idVendor, desc.idProduct, speed);if (!handle)libusb_open(dev, handle);if (handle) {if (desc.iManufacturer) {ret libusb_get_string_descriptor_ascii(handle, desc.iManufacturer, string, sizeof(string));if (ret 0)printf( Manufacturer: %s\n, (char *)string);}if (desc.iProduct) {ret libusb_get_string_descriptor_ascii(handle, desc.iProduct, string, sizeof(string));if (ret 0)printf( Product: %s\n, (char *)string);}if (desc.iSerialNumber verbose) {ret libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, string, sizeof(string));if (ret 0)printf( Serial Number: %s\n, (char *)string);}}if (verbose) {for (i 0; i desc.bNumConfigurations; i) {struct libusb_config_descriptor *config;ret libusb_get_config_descriptor(dev, i, config);if (LIBUSB_SUCCESS ! ret) {printf( Couldnt retrieve descriptors\n);continue;}print_configuration(config);libusb_free_config_descriptor(config);}if (handle desc.bcdUSB 0x0201)print_bos(handle);}if (handle)libusb_close(handle);
}#ifdef __linux__
#include errno.h
#include fcntl.h
#include unistd.hstatic int test_wrapped_device(const char *device_name)
{libusb_device_handle *handle;int r, fd;fd open(device_name, O_RDWR);if (fd 0) {printf(Error could not open %s: %s\n, device_name, strerror(errno));return 1;}r libusb_wrap_sys_device(NULL, fd, handle);if (r) {printf(Error wrapping device: %s: %s\n, device_name, libusb_strerror(r));close(fd);return 1;}print_device(libusb_get_device(handle), handle);close(fd);return 0;
}
#else
static int test_wrapped_device(const char *device_name)
{(void)device_name;printf(Testing wrapped devices is not supported on your platform\n);return 1;
}
#endifint main(int argc, char *argv[])
{const char *device_name NULL;libusb_device **devs;ssize_t cnt;int r, i;for (i 1; i argc; i) {if (!strcmp(argv[i], -v)) {verbose 1;} else if (!strcmp(argv[i], -d) (i 1) argc) {i;device_name argv[i];} else {printf(Usage %s [-v] [-d /dev/bus/usb/...]\n, argv[0]);printf(Note use -d to test libusb_wrap_sys_device()\n);return 1;}}r libusb_init_context(/*ctx*/NULL, /*options*/NULL, /*num_options*/0);if (r 0)return r;if (device_name) {r test_wrapped_device(device_name);} else {cnt libusb_get_device_list(NULL, devs);if (cnt 0) {libusb_exit(NULL);return 1;}for (i 0; devs[i]; i)print_device(devs[i], NULL);libusb_free_device_list(devs, 1);}libusb_exit(NULL);return r;
}