2012-12-24 12 views
7

में कुछ डेटा है, मैं ओटीजी केबल के माध्यम से एक कुंजी (एससीआईआई डिवाइस) के साथ संवाद करने के लिए गैलेक्सी टैब पी 7300 में एक ऐप लिखता हूं। मैं पहली बार bulkTransfer() के साथ डेटा पढ़ सकता हूं, लेकिन अगली बार नहीं कर सकता। फिर मैं डेटा को स्नीफ करने के लिए एलिसिस विजुअल यूएसबी का उपयोग करता हूं और मुझे लगता है कि कुंजी वास्तव में 13 बाइट डेटा लौटाती है। लेकिन एंड्रॉइड क्लाइंट (जीटी-पी 7300) में मुझे -1 मिलता है कि थोक ट्रांसफर रिटर्न। मैंने अपना विचार खत्म कर दिया है। किसी के लिए धन्यवाद जो मुझे सुराग का एक टुकड़ा दे सकता है।एंड्रॉइड थोक ट्रांसफर डेटा को पढ़ते समय ट्रांसफर करें लेकिन वास्तव में बफर

+0

नकारात्मक संख्या की वापसी आमतौर पर इस तरह के फ़ंक्शन के लिए त्रुटि कोड से मेल खाती है। किसी भी 'ERROR_' चर के लिए आप जिस भी कक्षा का उपयोग कर रहे हैं उसे जांचें। –

+0

धन्यवाद, मैट क्लार्क। मुझे उलझन में डाल दें कि कुंजी वास्तव में ट्यूचर डेटा लौटाती है, लेकिन थोक ट्रांस्फर रिटर्न -1। –

+0

खुशी है कि आप अपनी समस्या का पता लगाने में सक्षम थे। हैप्पी कोडिंग! और क्रिसमस का आनंद लें! : पी –

उत्तर

6

यूएसबी थोक हस्तांतरण का उपयोग कर, यहाँ जब लेन-देन में विफल रहता है

क) endpoint आप bulkTransfer समारोह बीत चुके हैं

ख की दिशा सत्यापित करें जाँच करने के लिए चीजों की एक सूची है) यह सुनिश्चित करें कि बफर आने वाले डेटा

ग) लंबाई क्षेत्र शायद सबसे महत्वपूर्ण है स्टोर करने के लिए पर्याप्त लंबाई है। यदि आप प्रतिक्रिया के सटीक आकार को जानते हैं, तो इसका इस्तेमाल करें।

डी) टाइमआउट पैरामीटर। यदि आप डिवाइस को एक प्रश्न भेजते हैं और प्रतिक्रिया सुनने पर पर्याप्त टाइमआउट प्रदान नहीं करते हैं, तो थोक ट्रांसफर -1 लौटा सकता है।

ऐसा लगता है कि टाइमआउट आपके मामले में व्यवहार को प्रभावित कर रहा है। मेरा सुझाव है कि प्रत्येक प्रतिक्रिया के लिए लंबाई फ़ील्ड में बाइट्स की सटीक संख्या का उपयोग करें, और लंबे समय तक (1000 की तरह) का उपयोग करें ताकि आप थोक अनुरोध को पूरा करने के लिए पर्याप्त समय दें।

+0

धन्यवाद जनवरी, आपने जो कहा है मैंने कोशिश की है, मेरी समस्या थोक है अंत में बिंदु एक स्टॉल सिग्नल लौटाता है, इसलिए मैं स्टाल को साफ़ करने के लिए एक कमांड भेजता हूं। उसके बाद, मैं सामान्य रूप से डेटा प्राप्त कर सकता हूं, लेकिन जब स्टॉल सिग्नल फिर से हुआ , मैं इसे साफ़ करने के लिए आदेश भेजता हूं, जबकि जब मैं डेटा प्राप्त करता हूं तो यह अच्छी तरह से काम नहीं करता है। यह वापस -1 है लेकिन वास्तव में कुछ डेटा है। मैंने अपने विचारों से बाहर भाग लिया है। –

+0

@ Wayne.liu क्या आप इस समस्या को हल करने में सक्षम हैं? यदि हां कृपया अपने निष्कर्ष साझा करें! –

+0

@ Wayne.liu कृपया जिस समस्या का सामना कर रहे थे उसका समाधान साझा करें। धन्यवाद – Sagar

1

एक समाधान पोस्ट करने में बहुत देर हो चुकी है, लेकिन भविष्य में किसी को इसके बारे में मदद की ज़रूरत है, तो यहां से इसका जवाब मिल सकता है।

मुझे एक ही समस्या का सामना करना पड़ा। मैं यूएसबी होस्ट डिवाइस के रूप में एंड्रॉइड (सैमसंग गैलेक्सी एस 3) का उपयोग कर रहा था। मैंने पढ़े गए एंडपॉइंट के बारे में पता लगाया और यूएसबी बल्कट्रांसफर का उपयोग कर डेटा को ट्राफर करने के लिए एंडपॉइंट लिखना शुरू किया। मैंने होस्ट मोड केस के लिए एंडपॉइंट्स को स्विच करने का प्रयास किया, यह डेटा को पहचाना और सफलतापूर्वक लिख/पढ़ा।

mReadEndpoint = mDataInterface.getEndpoint(0);// tweaking endpoints // 1 was for read and 0 was for write 
mWriteEndpoint = mDataInterface.getEndpoint(1); 

पीएस एंड्रॉइड के लिए "यूएसबी डिवाइस जानकारी" नामक एक एप्लिकेशन उपलब्ध है। इससे मुझे अपने यूएसबी डिवाइस के इंटरफेस और एंडपॉइंट्स को समझने में बहुत मदद मिली।

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