Partage
  • Partager sur Facebook
  • Partager sur Twitter

Interface utilisateur

    3 octobre 2016 à 15:05:23

    Bonjour à tous,

    J'ai développé un système d'éclairage intelligent basé sur un microcontrôleur pilotable par la liaison RS232 et je voudrais maintenant créer une interface utilisateur. Je voudrais utiliser une interface web afin de pouvoir accéder à mon système d'éclairage à partir d'un simple navigateur internet comme chrome. Je pense que je vais utiliser une carte Raspberry Pi connectée en RS232 avec mon système et sur laquelle je vais mettre un serveur du style apache et créer une page HTML. Cependant je ne sais pas trop comment faire l'interface entre ma page web et le port RS232 de la Raspberry. De plus je dois mettre en forme les informations à envoyer au système d'éclairage afin de respecter le protocole que j'ai mis en place.

    Avez vous des idées comment faire cela ?

    Jordan

    • Partager sur Facebook
    • Partager sur Twitter
      3 octobre 2016 à 15:19:59

      Bonjour, autorise le CGI.

      ou alors tu fais des exec de ton programme C++ dans des pages PHP.

      • Partager sur Facebook
      • Partager sur Twitter
        4 octobre 2016 à 9:24:25

        Bonjour,

        Merci pour ta réponse mais est ce le moyen le plus "propre" ?

        Jordan

        • Partager sur Facebook
        • Partager sur Twitter
          4 octobre 2016 à 10:30:44

          Probablement pas. Pour bien faire, il serait probablement mieux de dissocier le web du contrôle, avec un petit serveur à part offrant un service REST par exemple (ça se fait très bien avec boost ou cppRestSDK). Comme ça le jour ou tu veux faire une appli smartphone par exemple, tu n'as pas tout à refaire, juste les requêtes au service. (et ça évite le CGI et les appelles system depuis le serveur web).
          • Partager sur Facebook
          • Partager sur Twitter
            12 octobre 2016 à 15:08:04

            Ok merci je vais probablement me tourner vers un service REST du coup.
            • Partager sur Facebook
            • Partager sur Twitter
              12 octobre 2016 à 16:52:12

              Salut,

              Je ne vois pas trop pourquoi ceci est dans le forum C++. Accéder au port série en PHP n'est pas évident, par contre ça prend deux lignes en python... et créer un serveur web en python prend trois minutes.

              Ce programme créé un serveur web avec un <form> tout simple et envoie sur le port série ce que tu rentres dedans dans ton navigateur, puis il affiche la réponse dans le navigateur. À toi de définir une interface plus propre, avec des commandes bien spécifiées, etc. Note qu'il y a peut-être une erreur de syntaxe dans la partie série, puisque je n'avais rien sous la main pour tester, mais bon ça devrait se faire simplement.

              #!/usr/bin/env python
              # -*- coding: utf-8 -*-
              
              # install package usb1 from https://github.com/vpelletier/python-libusb1
              
              import serial
              
              # Un framework web pour créer ton site en 5 minutes : http://bottlepy.org
              # A installer séparément ou à télécharger sous forme de fichier (pip install bottle)
              import bottle
              
              # sert les fichiers statiques
              #~ @bottle.route('/static/<filename>')
              #~ def server_static(filename):
                  #~ return bottle.static_file(filename, root='web_static/')
              
              # sert l'index
              @bottle.route('/')
              def server_root():
                  return """<html><body><a href="serial">Accès port série</a></body></html>"""
              
              PortSerie = serial.Serial('/dev/ttyUSB0')
              
              # traite les commandes port série
              @bottle.get('/serial')
              def server_ajax_post():
                  # obtient les paramètres GET
                  params = dict( bottle.request.params )
                  print params
                  
                  # Bien sûr, tu vas mettre plusieurs actions etc, mais ici j'envoie juste une string.
                  data = params.get("data")
                  PortSerie.write( data.strip() + "\n" )
                  PortSerie.flush()
                  
                  # et je renvoie la réponse, ici une ligne de texte...
                  resp = PortSerie.readline()
                  return """<html>
              <body><form method="GET">Donnees a envoyer sur le port serie : <input type="text" name="data" /></form>
              Données reçues : %s
              </body></html>""" % resp
                     
              print "Starting Server..."
              bottle.run(host='0.0.0.0', port=8000, debug=False, quiet=True)
              



              • Partager sur Facebook
              • Partager sur Twitter

              Interface utilisateur

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown