تحديد مسار لمبات لجهاز HID USB باستخدام libhid على لينكس

StackOverflow https://stackoverflow.com/questions/1060860

  •  21-08-2019
  •  | 
  •  

سؤال

وأنا مهتم في استخدام 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 هنا . في خدمة تبادل الملفات مجانا، لذلك سوف تحتاج إلى تحمل بعض الإعلانات من أجل تحميل البرنامج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top