2012-05-06 23 views
11

सेट अप करने के लिए एंड्रॉइड में नियंत्रण ट्रांसफर के बारे में स्पष्टीकरण मैं जावा कोड लिखने की कोशिश कर रहा हूं ताकि मेरा एक्सओओएम हमारे एम्बेडेड डिवाइस के साथ यूएसबी से सीरियल केबल के साथ संवाद कर सके।यूएसबी संचार

connection.controlTransfer(0x21, 34, 0, 0, null, 0, 0); 
connection.controlTransfer(0x21, 32, 0, 0, new byte[] { (byte) 0x80, 
           0x25, 0x00, 0x00, 0x00, 0x00, 0x08 }, 7, 0); 

मैं जानता हूँ कि यह USB उपकरण के लिए सेटअप अनुरोध भेजने के लिए है:

मैं कोड के इस chunck इस्तेमाल किया। मुझे समझ में नहीं आ रहा है कि अनुरोध टाइप 0x21 क्यों है, क्यों अनुरोध आईडी 32, 34, आदि

चश्मा के अनुसार: मानक डिवाइस अनुरोध, मानक इंटरफ़ेस अनुरोध और मानक एंडपॉइंट अनुरोध में http://www.beyondlogic.org/usbnutshell/usb6.shtml#SetupPacket, अनुरोध का कोई भी प्रकार नहीं है 0x21 और requestid में से कोई भी 32 या 34 है। क्या इन पैरामीटरों के लिए प्रेषित डेटबफर सहित कोई व्याख्या है ??

उत्तर

20

सेटअप पैकेट में पहला बाइट (bmRequestType) 3 फ़ील्ड शामिल है। पहला (कम से कम महत्वपूर्ण) 5 बिट प्राप्तकर्ता हैं, अगले 2 बिट्स प्रकार हैं, और अंतिम बिट दिशा है।

यदि आपके पास 0x21 का मान है, तो इसमें 100001 का द्विआधारी प्रतिनिधित्व है। यदि आप इसे अलग-अलग क्षेत्रों में विभाजित करते हैं, तो यह 0 01 00001 है, जो होस्ट-टू-डिवाइस, कक्षा और इंटरफ़ेस से मेल खाता है, क्रमशः दिशा, प्रकार और प्राप्तकर्ता फ़ील्ड के लिए।

तो यह एक नियंत्रण संदेश है जिसे किसी विशेष इंटरफ़ेस को भेजा जा रहा है, जिसे कुछ मानक यूएसबी वर्ग द्वारा परिभाषित किया गया है।

जब से तुम उल्लेख किया है कि इस सीरियल एडाप्टर के लिए एक यूएसबी के संप्रेषण के लिए था, मैं इस ग्रहण करने के लिए जा रहा हूँ शायद प्रति USB Class Definitions for Communication Devices

कि दस्तावेज़ के अनुसार, एक bRequest मूल्य के रूप में एक संचार इंटरफेस करने के लिए भेजा जा रहा है, 34 (0x22) में से एक SET_CONTROL_LINE_STATE संदेश से मेल खाता है, जबकि 32 (0x20) एक SET_LINE_CODING संदेश (पृष्ठ 51 और 53) से मेल खाता है, जो एक धारावाहिक डिवाइस के सेटअप/प्रारंभिकरण के हिस्से के रूप में समझ में आता है।

इन संदेशों में से प्रत्येक के लिए विवरण पृष्ठ 57 और 58 पर नीचे परिभाषित किया गया है।

+2

धन्यवाद यीशु। यह अब काम करता है। मेरी प्रतिष्ठा में चार और अंक प्राप्त करने के बाद मैं आपको वोट दूंगा। – dan

+0

हाय। मैं इस प्रकार के चिप का उपयोग करने वाले एप्लिकेशन को विकसित करने के लिए xamarin का उपयोग कर रहा हूं। Xamarin में, ControlTransfer() विधि पहले पैरामीटर के रूप में एक enum देता है। हर बार जब मैं इन कार्यों के साथ इस फ़ंक्शन को कॉल करता हूं तो यह -1 देता है। ControlTransfer (UsbAddressing.Out, 0x0000, 0x0001, 0, शून्य, 0, 5000); क्या आप संभवतः इस समस्या को ठीक करने में मेरी मदद कर सकते हैं? –

+1

@ a.toraby - एक प्रश्न पूछने के लिए स्वतंत्र महसूस करें। यदि आप चाहते हैं, तो मुझे यह सुनिश्चित करने के लिए टिप्पणियों में पिंग करें कि मैं इसे देखता हूं – JesusFreke

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