नहीं, यह javax.xomm एपीआई के कारण नहीं है। RXTx का उपयोग उस एपीआई के माध्यम से किया जा सकता है या नहीं।
आरएक्सएक्स आंतरिक कुछ अलग/अजीब हैं हालांकि कुछ बग हैं। लघु संस्करण, इस तरह यह काम करना चाहिए: आपके पास टाइमआउट और थ्रेसहोल्ड के साथ खेलने के लिए दो पैरामीटर हैं। स्रोत कोड के अनुसार टाइमआउट को 0 (कोई नहीं) और थ्रेसहोल्ड 1 पर सेट करना (लौटने से पहले कम से कम 1 बाइट की आवश्यकता होती है) हमें सामान्य रूप से इनपुट इनपुट द्वारा परिभाषित किया जाना चाहिए, पढ़ना अवरुद्ध करना।
समस्या यह है कि इसे स्थापित करते समय भी वर्तमान स्थिर रिलीज (2.1.7r2) में एक बग है। थ्रेसहोल्ड पैरामीटर हमेशा 0 पर सेट होता है! स्रोत कोड से:
/* टेस्टिंग ttyset.c_cc [VMIN] = दहलीज; */ ttyset.c_cc [VMIN] = 0;
भ्रमित करने वाला हिस्सा यह है कि यह 2004 में भी मामला था और मेलिंग सूची और निश्चित पर रिपोर्ट किया गया था, लेकिन यह या तो वास्तव में तय नहीं हुआ था या फिर वापस आ गया है (एक प्रतिगमन)। वास्तव में एक नई बग रिपोर्ट है कि किसी कारण से मुझे पहले नहीं मिला। अंत में मुझे यह पाया गया कि यह प्री-रिलीज पैकेज स्रोत कोड फेंक रहा है और अन्यथा प्रकाशित परिवर्तन लॉग नहीं मिला है (वेब पेज अंतिम स्थिर संस्करण के बाद परिवर्तन लॉग नहीं दिखाता है, हालांकि यह सीवीएस में उपलब्ध है)।
समाधान
- यह सिर पर तय हो गई है, ताकि आप नवीनतम पूर्व-रिलीज़ संस्करण (2.2 सीरीज) का उपयोग करें या सीवीएस से यह संकलन कर सकते हैं।
की तर्ज पर एक बदसूरत वैकल्पिक हल करें:
int read(InputStream in) throws IOException {
int b;
while ((b=in.read()) == -1) {
try { Thread.sleep(10); } catch (InterruptedException e) { }
}
return b;
}
तो फिर तुम कार्य करें: in.read()
के बजाय read(in)
।
मैंने वास्तव में 212 साल पहले a blog entry about this लिखा था इसलिए मैं नहीं भूलूंगा।
स्रोत
2012-03-04 00:36:27
RXTX का डिज़ाइन वांछित होने के लिए बहुत अधिक छोड़ देता है। आप मेरी वैकल्पिक लाइब्रेरी को देखना चाहेंगे: http://code.google.com/p/jperipheral/ – Gili