تحديد مسار لمبات لجهاز HID USB باستخدام libhid على لينكس
سؤال
وأنا مهتم في استخدام libhid إلى الوصول إلى جهاز HID المخصصة التي نحن نعمل على تطوير على متحكم PIC. لقد كنت قادرا على الحصول على رمز بنجاح test_libhid لتشغيل. وتقدم الإرشادات للقراءة والكتابة إلى الأجهزة التي تستخدم هذه المكتبة كما التعليقات في التعليمات البرمجية test_libhid.
ولقد حاولت أن تتبع أساليب موثقة للقراءة والكتابة، ولكن حتى الآن، لم أكن لقراءة بنجاح أو الكتابة إلى الجهاز. وأظن أن السبب قد يكون ان اصف تقرير للجهاز يحدد مجموعة 64 بايت لكل من تقارير بيانات المدخلات والمخرجات.
ولقد قرأت التفاصيل الواردة في تعريف فئة الأجهزة لقسم اختفى من usb.org، وأعتقد أن أفهم كيفية عمل اصفات بشكل عام وكيف تترجم إلى لمبات مسارات، ولكن محاولاتي لقراءة وكتابة البيانات إلى فشلت الجهاز.
ولقد التحقق من أن الجهاز يعمل في ويندوز، لذلك يبدو مشكلتي على الاستلقاء على الجانب لينكس. لا أعتقد أنه ينبغي أن يهم، ولكن أود أن أشير إلى أنني أعمل حاليا في جهاز ظاهري برنامج VMWare، محملة أوبونتو الخادم 8.04
ويمكن لأي شخص أن يقدم بعض التوجيهات حول كيفية تحديد اختبأ مسار واصف التقرير التالي (ولدت من lsusb -vvv):
Report Descriptor: (length is 29)
Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
(null)
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Local ): Usage Minimum, data= [ 0x01 ] 1
(null)
Item(Local ): Usage Maximum, data= [ 0x40 ] 64
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x40 ] 64
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage Minimum, data= [ 0x01 ] 1
(null)
Item(Local ): Usage Maximum, data= [ 0x40 ] 64
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
وبالإضافة إلى ذلك، عند تشغيل البرنامج test_libhid، فإنه مقالب شجرة تحليل إلى 64 إدخالات متطابقة أن تبدو مثل هذا:
path: 0xff000001.0x00000000; type: 0x80
وهذه هي يفترض أن المدخلات. ويتبع هذه القائمة بنسبة 64 مقالات أخرى التي تبدو مثل هذا:
path: 0xff000001.0x00000000; type: 0x90
ولقد نشرت في القائمة البريدية libhid، ولكن لم يكن هناك الكثير من النشاط هناك في الآونة الأخيرة، حتى ظننت أنني سأجلب سؤالي هنا. إذا كان أي شخص يمكن أن توفر توجيهات بشأن الكيفية التي ينبغي أن تحديد المسار لمبات لهذا الإدخال والإخراج التقرير، فإنه سيكون عونا كبيرا.
وشكرا.
المحلول
وبعد الكثير من التجربة والخطأ، لم أكن قادرا على الحصول على libhid للعمل مع واصف تقرير لجهاز هدفي. لم أجد أن واجهة الجهاز لمبات (hiddev) عملت بشكل جيد للغاية، وكانت في الواقع من السهل جدا أن نفهم. هناك المرجعي PDF لhiddev أن أوصى. أيضا، وتشمل hiddev.h الملف في / البيرة / وتشمل / لينكس وأيضا مفيدة جدا. في أوبونتو 8.04، عملت واجهة hiddev "للخروج من مربع" مع أي تكوين إضافي المطلوبة.
ونأمل أن يكون هذا من بعض المساعدة إلى الشخص التالي الذي لديه مشاكل التواصل أجهزتهم لمبات لمجموعة لينكس.
ملحوظة: ارتباط أنني قدمت لملف .PDF يبدو فوق لقد اختفت. نشرت لي نسخة من ملف pdf هنا . في خدمة تبادل الملفات مجانا، لذلك سوف تحتاج إلى تحمل بعض الإعلانات من أجل تحميل البرنامج.