Вызов программы из браузера без использования веб-сервера - PullRequest
2 голосов
/ 22 июня 2009

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

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

Спасибо.

Ответы [ 7 ]

6 голосов
/ 22 июня 2009

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

<code>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
'% params) если __name__ == '__main__': server_class = BaseHTTPServer.HTTPServer httpd = server_class ((HOST_NAME, PORT_NUMBER), MyHandler) пытаться: httpd.serve_forever () кроме KeyboardInterrupt: проходить httpd.server_close ()

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

3 голосов
/ 22 июня 2009

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

import SimpleHTTPServer
import SocketServer

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

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

1 голос
/ 22 июня 2009

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

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

1 голос
/ 22 июня 2009

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

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

0 голосов
/ 22 июня 2009

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

0 голосов
/ 22 июня 2009

Попробуйте также XML-RPC, он дает вам простой способ передавать удаленные вызовы процедур из YUI на простой сервер XMLRPC и с этого на ваше устройство rs232

0 голосов
/ 22 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...