2017-10-28 17 views
5

के साथ जॉनी-फाइव का उपयोग करें मैं जॉनी-फाइव का उपयोग करना चाहता हूं और प्रतिक्रिया जेएस के साथ एक इंटरफ़ेस बनाना चाहता हूं।प्रतिक्रिया

मैंने इस React setup tutorial का उपयोग किया। मैंने उसी प्रोजेक्ट में जॉनी-फाइव स्थापित किया: http://johnny-five.io/ (जॉनी-फाइव स्टैंडअलोन ऐप्स में अकेले अकेले काम करता है। इससे मुझे अपने Arduino को नियंत्रित करने की अनुमति मिलती है)।

मेरी प्रतिक्रिया index.js:

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import './index.css'; 
import MainRouter from './routes'; 
import registerServiceWorker from './registerServiceWorker'; 
import five from 'johnny-five'; 

var board = new five.Board({ 
    port: "/dev/ttyACM0" 
}); 

board.on("ready", function() { 
    var led = new five.Led(13); 
    led.blink(500); 
}); 

ReactDOM.render(<MainRouter />, document.getElementById('root')) 
registerServiceWorker(); 

जब मैं प्रतिक्रिया चलाने के लिए, साइट लेकिन बोर्ड प्रतिक्रिया नहीं करता है शुरू होता है! जबकि प्रतिक्रिया के बिना एक ही कोड पूरी तरह से अच्छी तरह से काम करता है। जॉनी-पांच काम को रिएक्ट के साथ बनाने का कोई विचार?

+1

जब आप कहते हैं कि वही कोड बिना किसी प्रतिक्रिया के काम करता है, तो क्या आपका मतलब यह आपके ब्राउज़र से काम करता है? या आप इसे नोडजेएस के साथ कंसोल के माध्यम से चला रहे हैं? – Spidy

उत्तर

5

मुद्दा यह है कि जॉनी फाइव (जे 5) को ब्राउज़र से मूल रूप से नहीं चलाया जा सकता है। जे 5 को आपके कंप्यूटर पर बंदरगाहों तक पहुंच की आवश्यकता है जो ब्राउज़र (सुरक्षा कारणों से) की अनुमति नहीं देता है। मेरा सिद्धांत तब होता है जब आप कहते हैं कि "बिना प्रतिक्रिया के चलाएं", आप एक नोडजेएस कंसोल के माध्यम से चल रहे हैं (और न केवल कोड के रिएक्ट हिस्से को हटाकर और ब्राउज़र में फिर से चल रहे हैं)। नोडजेएस अनुप्रयोग एक अलग संदर्भ में तब ब्राउज़र स्क्रिप्ट चलाते हैं।

तो आप अपना लक्ष्य कैसे प्राप्त करते हैं? आपके पास कुछ विकल्प हैं जिनके बारे में मैं सोच सकता हूं।

विकल्प 1:

सबसे पहले, एक NodeJS डेस्कटॉप अनुप्रयोग लिखें। डेस्कटॉप एप्लिकेशन आपको उस प्रोग्रामटाइम यूजर इंटरफेस (जीयूआई) प्रदान करते हुए आपको रनटाइम संदर्भ (पोर्ट्स तक पहुंच) प्रदान करते हैं, जिसे आप वेब एप्लिकेशन के साथ उम्मीद कर रहे थे। आप इसे Node Webkit, AppJS, या कुछ अन्य (केवल Google नोडजेएस डेस्कटॉप एप्लिकेशन) के साथ कर सकते हैं। इन डेस्कटॉप अनुप्रयोगों के बारे में सबसे अच्छी बात यह है कि जीयूआई एचटीएमएल और सीएसएस में लिखा गया है। तो यह सिर्फ एक वेब पेज की तरह है, यह ब्राउज़र में नहीं चलाया जाता है (या वह ब्राउज़र नहीं जिसे आप उम्मीद करेंगे)।

विकल्प 2:

शायद आप वास्तव में एक वेब अनुप्रयोग चाहते हैं (हो सकता है आप एक वेबपेज दूसरों तक पहुंचने और अपने जॉनी पांच बॉट नियंत्रित कर सकते हैं चाहते हैं)। इस मामले में, आपको दो सिस्टम लिखने की आवश्यकता होगी। पहला वेब क्लाइंट है (जिसे आप पहले से ही अपने रिएक्ट कोड के साथ काम कर रहे थे)। वेब क्लाइंट में कोई जॉनी पाँच कोड नहीं होगा। दूसरी प्रणाली जिसे आपको लिखने की आवश्यकता होगी वह वेब सर्वर है। सर्वर सभी जॉनी पांच कोड को संभालेगा। आपके क्लाइंट में एक इंटरफ़ेस होगा (बटन, टेक्स्ट इनपुट, इत्यादि ...)। जब उपयोगकर्ता बटन पर क्लिक करता है, तो आप सर्वर से अनुरोध भेजते हैं। सर्वर उचित जॉनी पांच कोड को कॉल करके इस अनुरोध को संभालता है। यहां एक अत्यंत सरल example है।