2013-05-07 10 views
6

क्या कोई बैश कमांड, एक प्रोग्राम या libusb फ़ंक्शन (हालांकि मुझे कोई नहीं मिला) जो मुझे इंगित करता है कि यूएसबी डिवाइस के आउट या इन एंड पॉइंट्स क्या हैं?एक यूएसबी डिवाइस के एंडपॉइंट को जानें

उदाहरण के लिए, libusb_interface_descriptor के bNumEndpoints (libusb1.0 लाइब्रेरी से) मुझे दिखाता है कि मेरा यूएसबी ड्राइव 3 अंतराल है, लेकिन मुझे कैसे पता चलेगा कि उनकी मूर्खता क्या है?

उत्तर

4

मुझे आखिर में लुबसब-1.0 में जवाब मिला। में वास्तव में एक समारोह नहीं था, लेकिन एक struct क्षेत्र:

uint8_t libusb_endpoint_descriptor :: bEndpointAddress

endpoint इस वर्णनकर्ता द्वारा वर्णित का पता।

बिट्स 0: 3 एंडपॉइंट नंबर हैं। बिट्स 4: 6 आरक्षित हैं। बिट 7 दिशा इंगित करता है, libusb_endpoint_direction देखें।

यूएसबी ड्राइव के लिए प्रत्येक इंटरफ़ेस के लिए, मैं सिर्फ उपलब्ध अंतिमबिंदुओं प्रदर्शित करने के लिए इन पंक्तियों लिखना पड़ा:

cout<<"Number of endpoints: "<<(int)interdesc->bNumEndpoints<<endl; 
for(int k=0; k<(int)interdesc->bNumEndpoints; k++) { 
     epdesc = &interdesc->endpoint[k]; 
     cout<<"Descriptor Type: "<<(int)epdesc->bDescriptorType<<endl; 
    cout<<"EP Address: "<<(int)epdesc->bEndpointAddress<<endl; 
} 

कहाँ epdesc libusb_endpoint_descriptor है और interdesc libusb_interface_descriptor है।

8

के बाद आप डिवाइस का दावा किया है, इस चलाने (जहां $ टर्मिनल प्रवेश बिंदु का प्रतिनिधित्व करता है):

$ sudo lsusb -v -d 16c0:05df 

कहाँ 16c0: 05df एक कॉलन से अलग कर दिया अपने विक्रेता और उत्पाद id कर रहे हैं। (यदि आप इन, प्रकार lsusb पता नहीं है और यह पता लगाने जो उपकरण आपका अनप्लग और lsusb फिर से चलाकर है)

आप उलझन में उपयोग lsusb आदमी पेज मिलता है:

http://linux.die.net/man/8/lsusb

फिर एक बार आपका विवरण उठने के बाद, bEndpointAddress लेबल वाली रेखा ढूंढें और हेक्स कोड निम्न विशिष्ट रिपोर्ट के लिए अंत बिंदु होगा।

संबंधित मुद्दे