का उपयोग करने के लिए रास्पबेरी पीई पर टॉरनाडो, जो कि मैं प्राप्त करने की उम्मीद कर रहा हूं वह एक Arduino को Raspberry Pi के माध्यम से नियंत्रित करने के लिए कैनवास आधारित वेब इंटरफ़ेस है। use case यह है कि कोई उपयोगकर्ता raspberrypi:8080
पर जाता है जो एक कैनवास प्रदर्शित करता है। फिर स्लाइडर को ले जाने पर, एक वेबसाकेट संदेश रास्पबेरी पीआई पर Tornado सर्वर पर भेजा जाता है। टॉरनाडो फिर Arduino को एक धारावाहिक संदेश भेजता है जो LED के मान को बदलता है। अब तक इतना अच्छा है, मैं डेवलपर की मदद से इसे डेवलपर, Raspberry Pi Android HTML5 Realtime Servo Control द्वारा करने में सक्षम हूं।वेबसाइकिलों के साथ-साथ मॉनिटर सीरियल पोर्ट Arduino संचार
हालांकि, संचार रास्पबेरी पी से Arduino तक केवल एक ही रास्ता है। मैं टोरनाडो को सीरियल पोर्ट की निगरानी करने के लिए फ्रंट सेंसर पर किसी भी सेंसर डेटा को वापस लेना चाहता हूं। यहां वह जगह है जहां मैं आगे बढ़ने के बारे में अनिश्चित हूं। मैं Node.js का उपयोग करके इस तरह कुछ हासिल करने में सक्षम था, जो दोनों वेबसाईट संदेशों के साथ-साथ धारावाहिक संदेशों को अतुल्यकालिक रूप से मॉनीटर करता है।
क्या एक एसिंक्रोनस प्रक्रिया उत्पन्न की जानी चाहिए जो लगातार बंदरगाह पर नज़र रखता है? मैंने इस तरह के समाधान के लिए कुछ विकल्प देखे हैं।
- कुछ लोग
tornado.gen.Task
का सुझाव देते हैं, लेकिन एकल HTTP अनुरोधों के लिए, निरंतर धारावाहिक डेटा के लिए नहीं। tornado.ioloop.PeriodicCallback
जो मैं हर मिलीसेकंद के सीरियल डेटा की जांच करने के लिए सेट अप कर सकता था, लेकिन यह बहुत अधिक ओवरहेड की तरह लगता है।-
मैंने Swirl जैसे अलग-अलग टूल भी देखे हैं।
(घुमाव it's Github repo के अनुसार पुरानी है) या मैं एक अलग Python आवेदन जो धारावाहिक की निगरानी करता है और फिर कुछ पर तूफान आवेदन तो वह ऐसा समझ सकते हैं करने के लिए संचार सेट करना चाहिए?
एक websocket client- WebSocket संदेशों
तो वहाँ बहुत सारे विकल्प ... क्या कुछ सुझाव दिए गए हैं कर रहे हैं और उपर्युक्त विकल्पों में से किसी एक को आज़माने या टालने के कुछ कारण?
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import tornado.websocket
from tornado.options import define, options
define("port", default=8080, help="run on the given port", type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.render('index.html')
class WebSocketHandler(tornado.websocket.WebSocketHandler):
def open(self):
print 'new connection'
self.write_message("connected")
def on_message(self, message):
print 'message received %s' % message
self.write_message('message received %s' % message)
def on_close(self):
print 'connection closed'
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(
handlers=[
(r"/", IndexHandler),
(r"/ws", WebSocketHandler)
]
)
httpServer = tornado.httpserver.HTTPServer(app)
httpServer.listen(options.port)
print "Listening on port:", options.port
tornado.ioloop.IOLoop.instance().start()
+1 अच्छा विचार के लिए! – Rafa