LibUSB是一個用于訪問USB設備的庫,它可以在Linux和其他操作系統上使用
sudo apt-get install libusb-1.0-0-dev
main.c
的C源文件,并添加以下代碼:#include<stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <libusb-1.0/libusb.h>
void *usb_thread(void *arg) {
libusb_context *ctx = NULL;
libusb_device_handle *dev_handle = NULL;
int rc;
// 初始化LibUSB
rc = libusb_init(&ctx);
if (rc != LIBUSB_SUCCESS) {
fprintf(stderr, "Error initializing LibUSB: %s\n", libusb_error_name(rc));
return NULL;
}
// 打開USB設備
dev_handle = libusb_open_device_with_vid_pid(ctx, 0x1234, 0x5678);
if (!dev_handle) {
fprintf(stderr, "Error opening USB device\n");
libusb_exit(ctx);
return NULL;
}
// 在這里執行與USB設備的通信操作
// 關閉設備并退出LibUSB
libusb_close(dev_handle);
libusb_exit(ctx);
return NULL;
}
int main() {
pthread_t usb_thread_id;
int rc;
// 創建一個新線程來處理USB通信
rc = pthread_create(&usb_thread_id, NULL, usb_thread, NULL);
if (rc != 0) {
fprintf(stderr, "Error creating thread: %d\n", rc);
return 1;
}
// 等待線程完成
pthread_join(usb_thread_id, NULL);
return 0;
}
main.c
的目錄,然后運行以下命令:gcc -o usb_example main.c -lusb-1.0 -lpthread
./usb_example
這個示例程序將創建一個新線程,該線程將使用LibUSB庫打開一個具有指定VID(Vendor ID)和PID(Product ID)的USB設備。請注意,你需要根據實際情況修改VID和PID。在這個線程中,你可以執行與USB設備的通信操作。
這只是一個簡單的示例,實際應用程序可能需要更復雜的線程同步和通信機制。但是,這個示例應該足以幫助你開始在Linux上使用LibUSB庫進行多線程應用程序的開發。