HIDAPIHID 设备的 C 语言通用库
HIDAPI 是一个 USB 和蓝牙的 hid 类设备在 Windows、Linux、FreeBSD 和 Mac 的 C 语言通用库,使用 HIDAPI 可以在 Windows、Linux、FreeBSD 和 Mac 平台进行 USB 和蓝牙的 hid 类设备通信,非常简单实用。
示例代码:
#include <stdio.h> #include <stdlib.h> #include "hidapi.h" int main(int argc, char* argv[]) { int res; unsigned char buf[65]; #define MAX_STR 255 wchar_t wstr[MAX_STR]; hid_device *handle; int i; // Enumerate and print the HID devices on the system struct hid_device_info *devs, *cur_dev; devs = hid_enumerate(0x0, 0x0); cur_dev = devs; while (cur_dev) { printf("Device Found\n type: %04hx %04hx\n path: %s\n serial_number: %ls", cur_dev->vendor_id, cur_dev->product_id, cur_dev->path, cur_dev->serial_number); printf("\n"); printf(" Manufacturer: %ls\n", cur_dev->manufacturer_string); printf(" Product: %ls\n", cur_dev->product_string); printf("\n"); cur_dev = cur_dev->next; } hid_free_enumeration(devs); // Open the device using the VID, PID, // and optionally the Serial number. handle = hid_open(0x4d8, 0x3f, NULL); // Read the Manufacturer String res = hid_get_manufacturer_string(handle, wstr, MAX_STR); printf("Manufacturer String: %ls\n", wstr); // Read the Product String res = hid_get_product_string(handle, wstr, MAX_STR); printf("Product String: %ls\n", wstr); // Read the Serial Number String res = hid_get_serial_number_string(handle, wstr, MAX_STR); printf("Serial Number String: %ls", wstr); printf("\n"); // Send a Feature Report to the device buf[0] = 0x2; // First byte is report number buf[1] = 0xa0; buf[2] = 0x0a; res = hid_send_feature_report(handle, buf, 17); // Read a Feature Report from the device buf[0] = 0x2; res = hid_get_feature_report(handle, buf, sizeof(buf)); // Print out the returned buffer. printf("Feature Report\n "); for (i = 0; i < res; i++) printf("%02hhx ", buf[i]); printf("\n"); // Set the hid_read() function to be non-blocking. hid_set_nonblocking(handle, 1); // Send an Output report to toggle the LED (cmd 0x80) buf[0] = 1; // First byte is report number buf[1] = 0x80; res = hid_write(handle, buf, 65); // Send an Output report to request the state (cmd 0x81) buf[1] = 0x81; hid_write(handle, buf, 65); // Read requested state res = hid_read(handle, buf, 65); if (res < 0) printf("Unable to read()\n"); // Print out the returned buffer. for (i = 0; i < res; i++) printf("buf[%d]: %d\n", i, buf[i]); return 0; }
HIDAPI 有四个后端:
-
Windows (using hid.dll)
-
Linux/hidraw (using the Kernel's hidraw driver)
-
Linux/libusb (using libusb-1.0)
-
FreeBSD (using libusb-1.0)
-
Mac (using IOHidManager)
评论
gear-lib通用的 C 基础库
GearLib是一组面向IOT及网络流媒体开发的C基础库,接口简洁易用,适用于物联网嵌入式设备端的开发,如IOT采集传感器,视频监控,设备端网络直播等场景。 GearLib库内容包括:网络库 l
gear-lib通用的 C 基础库
0
qLibc通用的 C/C++ 库
qLibc 项目的目的就是提供一个通用的C/C++库,包括所有种类的容器和常用工具函数。特性:GeneralContainers.List—DoublyLinkedList.ListTable—KEY
qLibc通用的 C/C++ 库
0
LIB-ZC通用 C 扩展库
LIB-ZC是一个Linux平台通用C扩展库。通用配置, 通用命令行参数, 通用日志封装了常见的数据结构和算法链表/容器, 链表/数据结构, 链表/宏RBTREE/数据结构, RBTREE/宏词典,
LIB-ZC通用 C 扩展库
0