J'essaie de comprendre comment j'irais prendre des informations de série d'un Arduino qui contrôle une extension de navigateur Javascript que j'ai exécuté dans un navigateur ouvert localement sur un ordinateur. Il semblerait que j'aurais besoin d'une sorte d'intermédiaire pour internaliser les lectures en série et les transmettre au navigateur (pour activer les fonctions que j'ai codées). Python? Toutes les réponses, l'aide et la référence sont grandement appréciées.Communication d'arduino vers une extension de navigateur tout s'exécute localement
0
A
Répondre
0
Un serveur http très simple en python ressemblerait à ceci
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
class MyServer(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200, 'OK')
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write("hello")
HTTPServer(('', 8888), MyServer).serve_forever()
dans la méthode do_GET vous pouvez ajouter le code nécessaire pour accéder à votre programme arduino
...
ser = serial.Serial('/dev/tty.usbserial', 9600)
ser.write('5')
ser.readline()
...
Une autre option serait coder cette en ruby en utilisant webrick comme partie serveur web
require "serialport.so"
require 'webrick';
SERIALPORT="/dev/ttyUSB0"
s = HTTPServer.new(:Port => 2000)
class DemoServlet < HTTPServlet::AbstractServlet
def getValue()
begin
sp = SerialPort.new(SERIALPORT, 9600, 8, 1, SerialPort::NONE)
sp.read_timeout = 500
sp.write("... whatever you like to send to your arduino")
body = sp.readline()
sp.close
return body
rescue
puts "cant open serial port"
end
end
def do_GET(req, res)
body = "--.--"
body = getValue()
res.body = body
res['Content-Type'] = "text/plain"
end
end
s.mount("/test", DemoServlet)
trap("INT"){ s.shutdown }
s.start
a ird possibilité serait l'utilisation d'un bouclier d'Ethernet sur le arduino et sauter le code proxy complètement
2
Une autre option consiste à utiliser un module externe de navigation pour accéder au port série de javascript:
http://code.google.com/p/seriality/