मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जो एंड्रॉइड 3.2 में यूएसबी होस्ट क्षमताओं का उपयोग करता है। मैं आम तौर पर यूएसबी/सीरियल संचार के संबंध में ज्ञान और प्रतिभा की अपमानजनक कमी से पीड़ित हूं। मुझे जो भी करने की ज़रूरत है उसके लिए मैं कोई अच्छा उदाहरण कोड नहीं ढूंढ पा रहा हूं।एंड्रॉइड यूएसबी होस्ट संचार
मुझे यूएसबी संचार डिवाइस से पढ़ने की आवश्यकता है।
पूर्व: जब मैं (मेरे पीसी पर) पोटीन के माध्यम से कनेक्ट मैं दर्ज करें:
>GO
और डिवाइस मेरे लिए डेटा उगल शुरू होता है। पिच/रोल/अस्थायी/Checksum।
पूर्व:
$R1.217P-0.986T26.3*60
$R1.217P-0.986T26.3*60
$R1.217P-0.987T26.3*61
$R1.217P-0.986T26.3*60
$R1.217P-0.985T26.3*63
मैं एंड्रॉयड डिवाइस जो उस समय मैं 'गो' की एक गूंज प्राप्त से प्रारंभिक 'गो' आदेश भेज सकते हैं।
तब किसी भी बाद के पढ़ने पर कुछ भी नहीं।
मैं कैसे कर सकता हूं: 1) 'go' कमांड भेजें। 2) परिणामस्वरूप डेटा की धारा में पढ़ें।
यूएसबी डिवाइस जिसके साथ मैं काम कर रहा हूं, में निम्न इंटरफेस (एंडपॉइंट्स) हैं।
उपकरण वर्ग: संचार उपकरण (0x2)
इंटरफेस:
इंटरफ़ेस # 0 कक्षा: संचार उपकरण (0x2) Endpoint # 0 दिशा: इनबाउंड (0x80) प्रकार: Intrrupt (0x3) पोल अंतराल: 255 अधिकतम पैकेट आकार: 32 गुण: 000000011
इंटरफ़ेस # 1 कक्षा: संचार डी उपाध्यक्ष कक्षा (सीडीसी) (0xA) Endpoint # 0 पता: 129 संख्या: 1 दिशा: इनबाउंड (0x80) प्रकार: थोक (0x2) पोल अंतराल (0) अधिकतम पैकेट आकार: 32 गुण: 000,000,010
Endpoint # 1 पता: 2 संख्या: 2 दिशा: जावक (0x0) प्रकार: थोक (0x2) पोल अंतराल (0) अधिकतम पैकेट आकार: 32 गुण: 000,000,010
मैं अनुमति से निपटने, डिवाइस से कनेक्ट करने, सही इंटरफ़ेस ढूंढने और एंडपॉइंट्स असाइन करने में सक्षम हूं। मुझे बस यह समझने में परेशानी हो रही है कि आरंभिक आदेश भेजने के लिए कौन सी तकनीक का उपयोग करना है, आने वाले डेटा को पढ़ें। मैं थोक के विभिन्न संयोजनों की कोशिश कर रहा हूँ ट्रांसफर और नियंत्रण किसी भी भाग्य के साथ ट्रांसफर।
धन्यवाद।
मैं # 1 इंटरफ़ेस का उपयोग कर रहा हूँ के रूप में नीचे देखी गई:
public AcmDevice(UsbDeviceConnection usbDeviceConnection, UsbInterface usbInterface) {
Preconditions.checkState(usbDeviceConnection.claimInterface(usbInterface, true));
this.usbDeviceConnection = usbDeviceConnection;
UsbEndpoint epOut = null;
UsbEndpoint epIn = null;
// look for our bulk endpoints
for (int i = 0; i < usbInterface.getEndpointCount(); i++) {
UsbEndpoint ep = usbInterface.getEndpoint(i);
Log.d(TAG, "EP " + i + ": " + ep.getType());
if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) {
if (ep.getDirection() == UsbConstants.USB_DIR_OUT) {
epOut = ep;
} else if (ep.getDirection() == UsbConstants.USB_DIR_IN) {
epIn = ep;
}
}
}
if (epOut == null || epIn == null) {
throw new IllegalArgumentException("Not all endpoints found.");
}
AcmReader acmReader = new AcmReader(usbDeviceConnection, epIn);
AcmWriter acmWriter = new AcmWriter(usbDeviceConnection, epOut);
reader = new BufferedReader(acmReader);
writer = new BufferedWriter(acmWriter);
}
, तुम कैसे इंटरफ़ेस 1, और क्या प्रयोजन 0 इंटरफ़ेस होता है, बाधा इंटरफेस, के लिए इस्तेमाल किया जा चुना? धन्यवाद! – Rachael