Thiết bị USB HID ảo


9

Tôi đang phát triển một ứng dụng sẽ giao tiếp với thiết bị USB HID đính kèm. Vấn đề là chưa có thiết bị thực sự (nó đang được phát triển bởi một phần khác trong nhóm của chúng tôi), vì vậy, tôi thực sự muốn có một số cách để mô phỏng nó.

Tiện ích lý tưởng mà tôi có thể nghĩ ra sẽ giống như thế này: một mô-đun hạt nhân, khi được tải, sẽ tạo ra hai nút thiết bị trong hệ thống:

  • một thiết bị ẩn USB ảo, không thể phân biệt với bất kỳ nút thiết bị ẩn USB thực sự nào, có lẽ /dev/hidraw0; và tất nhiên thiết bị này nên được nhìn thấy bởi bất kỳ thư viện ẩn USB nào tôi sử dụng, ví dụ , hidapi.
  • một nút thiết bị dịch vụ, như /dev/virtual_hid_1.

Vì vậy, khi bất cứ ai ghi vào /dev/virtual_hid_1, dữ liệu này nên được đọc theo nghĩa đen /dev/hidraw0và ngược lại.

Bằng cách này, tôi có thể viết một số ứng dụng gỡ lỗi bằng bất kỳ ngôn ngữ nào tôi muốn, có thể là pythonbất cứ thứ gì; nó chỉ nên viết và đọc đến và đi /dev/virtual_hid_1. Nó sẽ rất thuận tiện cho việc phát triển.

Có một cái gì đó như thế này?

Câu trả lời:


5
  1. Bạn có thể quan tâm đến một giải pháp phần cứng rẻ tiền, thanh lịch và mở để mô phỏng các thiết bị usb đang phát triển: Bảng micropython . (Tôi không có liên kết với phần cứng này).

    Đó là một bảng độc lập nhỏ chạy python 3 và cắm vào usb nơi nó có thể xuất hiện, ví dụ như HID chuột hoặc HID bàn phím. Bạn chỉ cần sao chép tệp nguồn python của bạn vào thiết bị và nó chạy nó. Một khái niệm đẹp.

    Ok, nó không thực sự có ý nghĩa cho những gì bạn muốn, và bạn có thể cần tải xuống sdk và thực hiện một chút công việc trong C để nó xuất hiện chính xác như bạn cần, nhưng phần lớn mã của bạn sẽ là python. Có các cổng nối tiếp cấp ttl, cổng i2c, spi vv.

  2. Đối với một giải pháp thay thế, có một bảng mô phỏng các thiết bị usb với python nhưng tôi không chắc liệu bạn có thể mua một sản phẩm hoàn chỉnh hay không.

  3. Ngoài ra còn có giả lập usb bằng cách sử dụng usbip mà không cần thêm phần cứng, điều mà tôi chưa xem xét.


5

Có lẽ bạn đang tìm kiếm uhidmô-đun hạt nhân. Xem tài liệu trong các nguồn kernel :

Với UHID, trình điều khiển vận chuyển không gian người dùng có thể tạo các thiết bị ẩn kernel cho mỗi thiết bị được kết nối với bus điều khiển không gian người dùng. API UHID xác định các sự kiện I / O được cung cấp từ kernel đến không gian người dùng và ngược lại.

Có một ví dụ về ứng dụng không gian người dùng trong ./samples/uhid/uhid-example.c

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.