2009-06-22 2 views
2

Есть ли способ вызвать программу (скрипт Python) с локальной HTML-страницы? У меня есть YUI-colorpicker на этой странице и нужно отправить его значение на микроконтроллер через rs232. (Есть другой материал, чем сборщик, поэтому я не могу закодировать приложение вместо HTML-страницы.)Вызов программы из браузера без использования веб-сервера

Позже это перенесет на сервер, но мне нужно быстрое и простое решение.

Спасибо.

+2

Вызов погрома из веб-браузера? Будет ли это флеш-мобом? – skaffman

+0

Ах, кто-то исправил оригинальную орфографию ... это скорее дефинирует каламбур ... – skaffman

+1

Я удалил последующий пост - просто, stackoverflow не работает как обычный форум, и такие дополнения часто очень сильно проголосовали очень быстро , Когда у вас достаточно репутации, хорошо оставить «спасибо» в комментарии к конкретным ответам, но не как «ответ». –

ответ

6

Я вижу теперь, что Дафф упомянул простой сервер HTTP, но Я привел пример о том, как вы бы решить вашу проблему (с помощью BaseHTTPServer):

import BaseHTTPServer 

HOST_NAME = 'localhost' 
PORT_NUMBER = 1337 

class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler): 
    def do_GET(s): 
     s.send_response(200) 
     s.send_header('Content-Type', 'text/html') 
     s.end_headers() 

     # Get parameters in query. 
     params = {} 
     index = s.path.rfind('?') 
     if index >= 0: 
      parts = s.path[index + 1:].split('&') 
      for p in parts: 
       try: 
        a, b = p.split('=', 2) 
        params[a] = b 
       except: 
        params[p] = '' 

     # !!! 
     # Check if there is a color parameter and send to controller... 
     if 'color' in params: 
      print 'Send something to controller...' 
     # !!! 

     s.wfile.write('<pre>%s</pre>' % params) 

if __name__ == '__main__': 
    server_class = BaseHTTPServer.HTTPServer 
    httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler) 

    try: 
     httpd.serve_forever() 
    except KeyboardInterrupt: 
     pass 

    httpd.server_close() 

Теперь, с вашего JavaScript, вы бы назвали http://localhost:1337/?color=ffaabb

+0

сэр. каково должно быть содержание моего html? например. localhost/test.html – Vincent

+0

Сэр. как я должен запускать это? каково должно быть содержание моего html? – Vincent

1

Если вы хотите, чтобы страница HTML имела какое-то программное обеспечение на стороне сервера, вам понадобится какой-то веб-сервер для обработки.

Мое предложение состояло в том, чтобы получить веб-сервер, работающий в вашем окне разработки, или попытаться выполнить то, что вам нужно сделать с помощью локального настольного приложения или скрипта.

0

Вам не нужен какой-то сервер. Чего не попробуйте portable webservers? Вы можете запустить их с вашего USB-накопителя.

3

Python имеет небольшой встроенный веб-сервер. Если у вас уже есть Python для работы с RS232, вам может потребоваться прочитать here о том, как настроить простой и простой веб-сервер. Еще проще можно выглядеть this:

import SimpleHTTPServer 
import SocketServer 

port = 8000 
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler 
httpd = SocketServer.TCPServer(("", port), Handler) 
httpd.serve_forever() 

Постарайся так отделить вы источник, как хорошо, как это возможно, что у вас не будет слишком много хлопот, чтобы переместить его к производственному готовый Python, способный веб-сервер.

0

Try также XmlRpc это дает вам простой способ пройти удаленные вызовы процедур из YUI в сторону простого сервера XMLRPC и от этого к вашему rs232 устройства

1

другое быстрое решение https://addons.mozilla.org/en-US/firefox/addon/3002 POW, это расширение firefox, которое добавляет простой веб-сервер с встроенной серверной стороной JS.

Вы сможете получить доступ к командной строке и вызвать скрипт python оттуда.

0

Не вижу причин, по которым вы не можете настроить обработчик для файлов .py/.bat/.vbs в вашем браузере. Это должно привести к тому, что выбранное вами приложение будет запускать скрипт при его ссылке. Это не будет работать, когда вы перейдете на сервер, но в качестве платформы тестирования он будет работать. Просто не забудьте выключить его, когда закончите, или вы подвергли себя вирусам с других сайтов.

Смежные вопросы