2009-06-22 7 views
2

Existe-t-il un moyen d'appeler un programme (script Python) à partir d'une page HTML locale? J'ai un YUI-colorpicker sur cette page et j'ai besoin d'envoyer sa valeur à un microcontrôleur via rs232. (Il y a autre chose que le sélecteur, donc je ne peux pas coder une application au lieu d'une page HTML.)Appel d'un programme à partir d'un navigateur sans utiliser de serveur Web

Ensuite, cela migrera vers un serveur, mais j'ai besoin d'une solution rapide et facile maintenant.

Merci.

+2

Appel d'un pogrom depuis un navigateur Web? Serait-ce un flash mob? – skaffman

+0

Ah, quelqu'un a corrigé l'orthographe originale ... qui désarçonne plutôt le jeu de mots ... – skaffman

+1

J'ai supprimé le post de suivi - tout simplement, stackoverflow ne fonctionne pas comme un forum régulier, et de tels ajouts sont souvent fortement déclinés - votés très rapidement . Lorsque vous avez assez de réputation, il est bon de laisser un «merci» dans un commentaire à des réponses spécifiques - mais pas comme une «réponse». –

Répondre

6

Je vois maintenant que Daff mentionné le serveur HTTP simple, mais J'ai fait un exemple sur la façon dont vous souhaitez résoudre votre problème (en utilisant 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() 

maintenant, de votre JavaScript, vous appelleriez http://localhost:1337/?color=ffaabb

+0

monsieur. quel devrait être le contenu de mon code HTML? par exemple. localhost/test.html – Vincent

+0

Monsieur. comment dois-je courir cela? quel devrait être le contenu de mon code HTML? – Vincent

1

Si vous voulez qu'une page HTML ait une sorte de programmation côté serveur, vous aurez besoin d'un serveur web pour effectuer le traitement. Ma suggestion serait d'obtenir un serveur Web fonctionnant sur votre boîte de développement, ou essaye d'accomplir ce que vous devez faire avec une application ou un script de bureau local.

0

Non, vous avez besoin d'une sorte de serveur. Pourquoi ne pas essayer le portable webservers? Vous pouvez les exécuter depuis votre lecteur USB.

3

Python a un petit serveur Web intégré. Si vous avez déjà le Python avec le RS232, vous devrez peut-être lire here pour savoir comment configurer un serveur web simple et basique. Un encore plus facile peut ressembler à this:

import SimpleHTTPServer 
import SocketServer 

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

Essayez de sorte que vous séparer approvisionnez aussi bien que possible, que vous ne serez pas avoir trop de mal à le déplacer vers un serveur Web Python prêt pour la production capable.

0

Essayez aussi XmlRpc il vous donne un moyen simple de passer appels de procédure distante de YUI vers un serveur simple XMLRPC et de ce vers votre appareil rs232

1

une autre solution rapide est https://addons.mozilla.org/en-US/firefox/addon/3002 POW, c'est une extension firefox qui ajoute un serveur web simple avec Server Side JS intégré.

Vous seriez en mesure d'accéder à une ligne de commande et d'appeler un script python à partir de là.

0

Je ne vois pas pourquoi vous ne pouvez pas configurer un gestionnaire pour les fichiers .py/.bat/.vbs dans votre navigateur. Cela devrait aboutir à ce que votre application choisie exécute un script lorsque vous liez dessus. Cela ne fonctionnera pas lorsque vous migrez vers le serveur, mais en tant que plate-forme de test, cela fonctionnera. N'oubliez pas de l'éteindre lorsque vous avez terminé ou de vous exposer à des virus provenant d'autres sites.

Questions connexes