2012-10-08 11 views
11
ByteBuffer byteBuffer = ByteBuffer.allocate(9);;  
UsbRequest request = new UsbRequest(); 
request.initialize(mConnection,mEndpointIntr); 
boolean b = request.queue(byteBuffer, 9); 
Log.d(TAG, "start the request wait"); 
UsbRequest ur = mConnection.requestWait(); 

मैं एंड्रॉइड यूएसबी इंटरप्ट का उपयोग करना चाहता हूं। उपरोक्त कोड मेरे अपने यूएसबी बोर्ड से डेटा प्राप्त करने के लिए एक धागा है। लेकिन जब मैं UsbRequest ur = mConnection.requestWait(); पर कॉल करने का प्रयास करता हूं तो फ़ंक्शन वापस नहीं आता है, यह हमेशा requestWait() में चलता है। ऐसा क्यों होता है?एंड्रॉइड यूएसबी अनुरोध Wait वापस नहीं

उत्तर

8

requestWait() अपने कोड request.queue(byteBuffer, 9)

यहाँ के परिणाम की प्रतीक्षा करेंगे के कुछ संभावित कारण यह नहीं लौटा रहा है कर रहे हैं:

  1. आपका अनुरोध कतार तुलना में एक अलग अंत बिंदु पर है कि आपके यूएसबी डिवाइस वास्तव में डेटा भेज रहा है। दो बार जांचें कि आप सही इंटरफेस और एंडपॉइंट पर सुन रहे हैं।

  2. यूएसबी डिवाइस फर्मवेयर पक्ष पर, सामान्य इंटरफ़ेस क्लास जैसे एचआईडी पर अपना इंटरप्ट एंडपॉइंट न बनाएं। एक नया विक्रेता विशिष्ट इंटरफ़ेस बनाएं, अन्यथा कर्नेल इंटरफ़ेस को पकड़ सकता है यदि यह छिपा हुआ है और अनुरोध कतार विफल हो सकती है, तो यह मेरे साथ हुआ।

0

दो समाप्ति बिंदुओं (IN और बाहर) MK802 से जुड़ा के साथ अपने ही यूएसबी HID डिवाइस पर, मैं एक ही समस्या (कतार एक अनुरोध झूठी लौटे) का सामना करना पड़ा। मैंने दावा किया था इंटरफेस झूठी के साथ बुलाया। निम्नलिखित की स्थापना करने में मदद मिली, मुझे डेटा ठीक है।

c.claimInterface(device.getInterface(0), true); 
संबंधित मुद्दे