2008-11-11 86 views
16

Thư viện nên;Thư viện usb tốt nhất để giao tiếp với thiết bị USB HID trên Windows là gì?

-Bạn dễ sử dụng và một vài dòng mã khách hàng sẽ hoàn thành nhiều
-Bởi nền tảng độc lập nhất có thể. (Trong trường hợp các cổng tương lai cho các nền tảng khác)
-Có các ràng buộc C++.
-Đã trưởng thành và ổn định

Tôi cũng muốn được thông báo về hầu hết các sự kiện HID thông qua gọi lại.

Tôi đã xem xét các lựa chọn thay thế sau:

* libhid - (Thật không may?) Đây là GPL và không thể được sử dụng trong ứng dụng của tôi.
* WDK - Có vẻ hơi thấp một chút để tôi sử dụng. Tôi không cần loại điều khiển đó
* atusbhid - Điều này có mức trừu tượng thích hợp nhưng được gắn chặt với vòng lặp thông báo cửa sổ

Bạn có lựa chọn nào khác để cung cấp không?

+0

Tôi phát hiện ra thông qua kiểm tra rằng libusb-win32-src-1.2.6.0 không kích hoạt phần tử thiết bị của struct usb_bus. Hãy thử cái gì khác. – Frank

Trả lời

5

Nếu libhid làm việc cho bạn, thì có lẽ điều cần làm là viết một ứng dụng (bạn sẽ GPL), sử dụng libhid để nói chuyện với thiết bị, sau đó cung cấp bất cứ thứ gì bạn cần thông qua kết nối TCP. Ứng dụng thực của bạn sẽ kết nối qua TCP để thực hiện những gì cần. Điều này rõ ràng sẽ là một hit hiệu suất lớn.

Ứng dụng này có hiệu quả sẽ là một 'shim' giữa libhid và ứng dụng của bạn. Trong trường hợp này, shim sẽ tồn tại vì lý do pháp lý, không phải kỹ thuật.

Tôi không nói đó là một ý tưởng hay, chỉ là đó là một ý tưởng.

2

Bộ phần mềm HIDMaker từ hệ thống theo dõi là một tùy chọn.

Ưu điểm: - Dễ sử dụng (tuyệt vời cho việc học làm thế nào để chương trình cho USB HID) - Tạo ra làm việc các ứng dụng mã nguồn trong một định dạng dự án khác nhau (Visual Studio, Borland) - Tạo mã ví dụ ổn định cho cả máy chủ và thiết bị (ổn định trong kinh nghiệm của tôi) - hiệu suất cao (nếu HID thậm chí có thể được cho là có hiệu suất cao ở nơi đầu tiên)

Nhược điểm: - Chỉ hoạt động trên Microsoft Windows - Sử dụng nó thư viện USB riêng tôi nghĩ (ActiveX)

+0

Vì vậy, trong thực tế, nó chỉ cung cấp cho bạn một ràng buộc C++ để điều khiển ActiveX của họ. Ngoài ra, nó có nghĩa là để sản xuất mã trên mặt phần cứng cho một loạt các vi điều khiển. Điều đó có vẻ hơi quá mức với tôi. –

2

Cân nhắc việc cuộn yo riêng của bạn. Bạn sẽ có toàn quyền kiểm soát giao diện, mức độ độc lập nền tảng và như vậy. Mặc dù một dự án là GPL, bạn có thể sử dụng nó như một công thức cho riêng bạn, và như một thử nghiệm để tìm ra các vấn đề với chính bạn.

+0

Tôi đã tạo thư viện HID của riêng mình trong C# và C++/CLI. Bạn có thể tham khảo WDK. –

2

Nhìn vào mã này:

http://khason.net/blog/read-and-use-fm-radio-or-any-other-usb-hid-device-from-c

Nó cung cấp cho bạn một số lớp học đơn giản để nói chuyện với một thiết bị HID. Những gì nó sôi xuống là, có được bí danh cho thiết bị (một cái gì đó như \? \ HID # Vid_nnnn & Pid_nnn # .......) và sử dụng CreateFile để mở nó. Bạn có thể lấy bí danh của thiết bị theo HKML \ SYSTEM \ CCS \ Control \ DeviceClasses {4d1e55 ...} \

Vid và Pid là ID nhà cung cấp và ID sản phẩm của thiết bị (kiểm tra Trình quản lý thiết bị).

2

Có một vài trình điều khiển USB HID Host cho Windows. Thư viện liên kết động dễ sử dụng là từ http://embedded24.net. Ngoài ra còn có một số ứng dụng ví dụ bao gồm cho Visual Studio 2010 (C++, C# và VB).

7

Hãy xem hidapi: đó là C, câu trả lời câu hỏi liên kết C++ (hiệu quả :)), là nền tảng chéo và có giấy phép rất dễ phép. Dường như không có các cuộc gọi lại, nhưng ...

+0

Chắc chắn là lựa chọn tốt nhất nếu libhid không phải là một lựa chọn do cấp phép. – patrickvacek

Các vấn đề liên quan