2013-12-12 4 views
9

से सीरियल पोर्ट डेटा को कैसे पढ़ा जाए, मैंने यूएसबी का उपयोग करके अपने लैपटॉप में एक आर्डिनो को जोड़ा, और मैं प्रसंस्करण का उपयोग कर धारावाहिक डेटा पढ़ सकता हूं।जावास्क्रिप्ट

क्या इस डेटा को स्थानीय वेबब्रोसर में वास्तविक समय में प्राप्त करने का कोई तरीका है? उदाहरण के लिए, एक टेक्स्ट फ़ील्ड जो सीरियल पोर्ट से मूल्य दिखाता है? इसे इंटरनेट से कनेक्ट नहीं होना चाहिए।

प्रसंस्करण का जावास्क्रिप्ट संस्करण निम्न कोड का समर्थन नहीं करता है, जो आदर्श समाधान होता।

प्रसंस्करण कोड है:

myPort = new Serial(this, Serial.list()[0], 9600); 
// read a byte from the serial port 
int inByte = myPort.read(); 
// print it 
println(inByte); 
// now send this value somewhere...? 
// ehm... 
+1

आपको यह देखना चाहिए: https://github.com/rwaldron/johnny-five। शायद यह आपकी मदद कर सकता है। – kmas

उत्तर

10

सीधे वेब ब्राउज़र से स्थानीय मशीन का उपयोग करने की कोई तरीका नहीं है। सुरक्षा कारणों से ब्राउज़र के पास मशीन संसाधनों तक सीमित पहुंच है।

ऐसा करने के लिए यह विकल्प आपके चयन के ब्राउज़र के लिए एक एक्सटेंशन लिखना होगा। हालांकि एक्सटेंशन में कई प्रकार की सीमाएं भी हैं।

विकल्प दो आपको आवश्यक कार्यक्षमता प्रदान करने के लिए स्थानीय सर्वर का उपयोग करना होगा। व्यक्तिगत रूप से मैं node.js का उपयोग करने की सलाह देता हूं (यह हल्का वजन, तेज़ और कार्यान्वित करने में आसान है)। आप https://github.com/rwaldron/johnny-five (@kmas सुझाए गए अनुसार) या https://github.com/voodootikigod/node-serialport का उपयोग करके धारावाहिक डेटा को पढ़/लिख सकते हैं और आप एक सरल सेवा बनाने के लिए http://socket.io/ का उपयोग कर सकते हैं और ब्राउज़र से कनेक्ट कर सकते हैं। सॉकेट.ओ आधुनिक ब्राउज़र में वेबसाकेट का उपयोग करता है और रीयल-टाइम कनेक्शन के लिए उत्कृष्ट रूप से अच्छी तरह से काम करता है।

+0

धन्यवाद! मैंने पहले ही ब्राउज़र एक्सटेंशन (सीरियलिटी) का उपयोग करने का प्रयास किया है, लेकिन यह केवल ओएस एक्स पर सफारी में काम करता है। ऐसा लगता है कि अब मैं नोड.जेएस को देखने से बच नहीं सकता! – Kokodoko

+0

... हालांकि कुछ हद तक आवश्यकताएं मुझे परेशान करती हैं। XCode? कमांडलाइन उपकरण? अजगर? (लेकिन नवीनतम नहीं है?) ... इस तरह के एक साधारण सवाल के लिए, यह पता लगाने के लिए काफी कुछ लगता है। – Kokodoko

+1

node.js. से अन्य विकल्प हैं मुझे लगता है कि node.js सबसे उपयोगी होगा, क्योंकि socket.io मॉड्यूल आपके लिए ब्राउज़र में भारी भारोत्तोलन करता है। यदि आप पाइथन, PHP, रूबी, आदि के साथ जाने का निर्णय लेते हैं, तो आपको वेबसर्वर को स्थापित और कॉन्फ़िगर करना होगा और अपना स्वयं का वेबसाकेट कार्यान्वयन लिखना होगा और आपके पास फ़ॉलबैक नहीं होगा। –

1

मुझे हल करने के लिए एक ही समस्या थी। मेरा डेटा अधिग्रहण प्रणाली (डीएचक्यू) (आपके Arduino की तरह) HTTP, टीसीपी, एफ़टीपी, साथ ही सीरियल में डेटा रिले करता है। मुझे इसे सर्वर पर कैप्चर करना था और फिर इसे रीयल-टाइम में अपने वेबपृष्ठ पर भेजना पड़ा।

मैंने जो हैक लिखा है वह सर्वर पर नोडजेस का उपयोग करता है, और डीएचक्यू को सर्वर पर एनसीजेजे के "नेट" मॉड्यूल का उपयोग करके टीसीपी सॉकेट का उपयोग करके जोड़ता है और सर्वर को सॉकेट.io का उपयोग करके HTML पेज से जोड़ता है।

कोड और संदर्भ "How to get sensor data over TCP/IP in nodejs?" में पाया जा सकता है।

मैं टीसीपी का उपयोग करता हूं क्योंकि मैं एक लंबी दूरी पर डेटा संचारित करना चाहता था। आपको क्रमशः सॉकेट प्रोटोकॉल को संशोधित करने की आवश्यकता है।

सीरियल-टू-टीसीपी रीडायरेक्शन के लिए, आप विंडोज के लिए सेंसरमोन्की या उनके processing sketch * निक्स/मैक ओएस के लिए ब्लूम का उपयोग कर सकते हैं।

+0

मैंने उस पर ध्यान दिया लेकिन इसमें बहुत सारे कदम शामिल हैं, और बाहरी सेवाओं पर ऑनलाइन निर्भर करता है। क्रोम एक्सटेंशन का उपयोग करके मैं मूल रूप से ऑफलाइन हो सकता हूं और अभी भी सीरियल पोर्ट तक पहुंच सकता हूं। – Kokodoko

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