मैं करने के लिए सॉफ्टवेयर लिख रहा हूँ यूएसबी होस्ट एपीआई द्वारा प्रदान का उपयोग कर और एक परिधीय उपकरण (Android संस्करण 4.0.3 और कर्नेल संस्करण 2.6.39.4 के साथ Motorola Xoom) गोली के बीच संवाद एंड्रॉयड।एंड्रॉयड यूएसबी होस्ट एपीआई: थोक हस्तांतरण बफर आकार
- नियंत्रण:
controlTransfer(int requestType, int request, int value, int index, byte[] buffer, int length, int timeout)
- थोक: मैं संचार के केवल दो प्रकार का उपयोग
bulkTransfer(UsbEndpoint endpoint, byte[] buffer, int length, int timeout)
नियंत्रण हस्तांतरण ठीक काम करता है, लेकिन मैं थोक हस्तांतरण के साथ एक समस्या है। मैं थोक ट्रांसफर फ़ंक्शन के लिए केवल बफर के आकार के रूप में 32768 का उपयोग कर सकता हूं। कम या ज्यादा उपयोग करना संभव नहीं है। मुझे पता है कि मैं बफर पाइप (आकार: 3276 9 बाइट्स) की सीमा के कारण अधिक उपयोग नहीं कर सकता।
यह परिधीय उपकरण उस डेटा को स्ट्रीम करता है जो थोक रूप से बल्कट्रान फ़ंक्शन द्वारा पढ़ा नहीं जाता है। मुझे लगता है कि कुछ डेटा खो गया है।
और उस पर आधारित है, समस्या की मेरी व्याख्या यह है कि कुछ डेटा को अवरुद्ध लिखने (2) समारोह द्वारा किए गए ध्वज की वजह से पाइप (बफर) के लिए लिखा नहीं है। क्या मैं सही हूँ? यदि यह सच है तो मैं पाइप बफर बदल सकता हूं।
- इस समस्या का मेरा पहला समाधान अधिक बफर है। For kernel >= 2.6.35, you can change the size of a pipe with
fcntl(fd, F_SETPIPE_SZ, size)
लेकिन यूएसबी पाइप के लिए मुझेfd
(फ़ाइल डिस्क्रिप्टर) कैसे मिल सकता है? - दूसरा विकल्प
ulimit -p SIZE
का उपयोग करना है, लेकिन मेरे कर्नेल के लिए पैरामीटरp
पाइप के लिए नहीं है लेकिन प्रक्रिया है।
क्या किसी को भी एक ही समस्या का सामना करना पड़ा है, कोई समाधान?
थोक हस्तांतरण का उपयोग कर, डेटा हानि के मुद्दे का भी सामना कर रहा है। इसमें देख रहे हैं। एक बार मुझे मूल कारण मिलने के बाद, मैं आपको बता दूंगा। स्थिति अद्यतन करते रहें। – yokks
ठीक है, जानकारी के लिए धन्यवाद। – syntagma
http://android.serverbox.ch/?p=370 क्या आप इस वार्तालाप से गुजर सकते हैं? आने वाले डेटा को संभालने के लिए यहां एक तर्क प्रस्तुत किया गया है। आशा है इससे आपकी मदद होगी। – yokks