Связь с Arduino для расширения браузера все выполняется локально - PullRequest
0 голосов
/ 26 июля 2010

Я пытаюсь понять, как мне поступить с последовательной информацией из Arduino, который управляет расширением браузера Javascript, которое я запускаю в открытом браузере локально на компьютере.Казалось бы, мне нужен какой-то посредник, чтобы усвоить последовательные показания и передать их в браузер (чтобы активировать функции, которые я кодировал).Python?Любые ответы, помощь и ссылки с благодарностью.

Ответы [ 2 ]

2 голосов
/ 03 октября 2010

Другой вариант - использовать плагин браузера для доступа к последовательному порту из JavaScript: http://code.google.com/p/seriality/

0 голосов
/ 26 июля 2010

Очень простой http-сервер в python будет выглядеть следующим образом:

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()

В методе do_Get вы можете добавить код, необходимый для доступа к вашей программе Arduino

...
ser = serial.Serial('/dev/tty.usbserial', 9600)
ser.write('5')
ser.readline()
...

другой вариант будеткодировать это в ruby, используя webrick в качестве части веб-сервера

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

третий вариант - использовать ethernet-щит на arduino и полностью пропустить код прокси

...