« SE5 ECEAI/eceai 2023/2024/Brenier-Nguyen » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 17 : Ligne 17 :




<b>Code du serveur Python :</b>
<b>Code du serveur Python :</b><syntaxhighlight lang="python3">
 
from http.server import HTTPServer, BaseHTTPRequestHandler</nowiki>
<code>from http.server import HTTPServer, BaseHTTPRequestHandler</nowiki>


import json
import json
Ligne 25 : Ligne 24 :
import socket
import socket


<nowiki>#</nowiki> Stocker les requ  tes POST re  ues
# Stocker les requ  tes POST re  ues


post_requests = []
post_requests = []
Ligne 31 : Ligne 30 :
class CustomHTTPHandler(BaseHTTPRequestHandler):
class CustomHTTPHandler(BaseHTTPRequestHandler):


   def do_GET(self):
  def do_GET(self):


       if self.path == '/':
      if self.path == '/':


           self.path = '/index.html'
          self.path = '/index.html'


       if self.path == '/data':
      if self.path == '/data':


           self.send_response(200)
          self.send_response(200)


           self.send_header('Content-type', 'application/json')
          self.send_header('Content-type', 'application/json')


           self.end_headers()
          self.end_headers()


           self.wfile.write(bytes(json.dumps(post_requests), 'utf-8'))
          self.wfile.write(bytes(json.dumps(post_requests), 'utf-8'))


           return
          return


if self.path == '/index.html':
if self.path == '/index.html':


           self.send_response(200)
          self.send_response(200)


           self.send_header('Content-type', 'text/html')
          self.send_header('Content-type', 'text/html')


           self.end_headers()
          self.end_headers()


           # Cr  er le contenu HTML avec les donn  es POST
          # Cr  er le contenu HTML avec les donn  es POST


           content = '<nowiki><html><body><h1>Donn  es POST:</h1></nowiki><nowiki><ul>'</nowiki>
          content = '<html><body><h1>Donn  es POST:</h1><ul>'


           for item in post_requests:
          for item in post_requests:


               content += f'<nowiki><li>{item}</li></nowiki>'
              content += f'<li>{item}</li>'


           content += '<nowiki></ul></nowiki><nowiki></body></nowiki><nowiki></html></nowiki>'
          content += '</ul></body></html>'


           self.wfile.write(content.encode('utf-8'))
          self.wfile.write(content.encode('utf-8'))


           return
          return


       try:
      try:


file_to_open = open(self.path[1:]).read()
file_to_open = open(self.path[1:]).read()


           self.send_response(200)
          self.send_response(200)


           self.send_header('Content-type', 'text/html')
          self.send_header('Content-type', 'text/html')


           self.end_headers()
          self.end_headers()


           self.wfile.write(bytes(file_to_open, 'utf-8'))
          self.wfile.write(bytes(file_to_open, 'utf-8'))


       except FileNotFoundError:
      except FileNotFoundError:


           self.send_error(404, 'File Not Found: %s' % self.path)
          self.send_error(404, 'File Not Found: %s' % self.path)


   def do_POST(self):
  def do_POST(self):


       content_length = int(self.headers['Content-Length'])
      content_length = int(self.headers['Content-Length'])


       post_data = self.rfile.read(content_length).decode('utf-8')
      post_data = self.rfile.read(content_length).decode('utf-8')


       # Ajouter les donn  es POST    la liste
      # Ajouter les donn  es POST   la liste


       post_requests.append(post_data)
      post_requests.append(post_data)


       # Envoyer une rponse HTTP
      # Envoyer une rponse HTTP


       self.send_response(200)
      self.send_response(200)


       self.end_headers()
      self.end_headers()


self.wfile.write(b"POST request processed")
self.wfile.write(b"POST request processed")
Ligne 107 : Ligne 106 :
class HTTPServerV6(HTTPServer):
class HTTPServerV6(HTTPServer):


   address_family = socket.AF_INET6
  address_family = socket.AF_INET6


if __name__ == '__main__':
if __name__ == '__main__':


   server_address = ('::', 8888)  #  ^icoute sur toutes les interfaces IPv6, p>
  server_address = ('::', 8888) # ^icoute sur toutes les interfaces IPv6, p>


   httpd = HTTPServerV6(server_address, CustomHTTPHandler)
  httpd = HTTPServerV6(server_address, CustomHTTPHandler)


   print("Serveur actif sur le port", 8888)
  print("Serveur actif sur le port", 8888)


   httpd.serve_forever() </code>
  httpd.serve_forever()  
</syntaxhighlight>

Version du 18 décembre 2023 à 16:37

  • Séance 1 :
    • Création et configuration de la VM sur Chassiron
    • Installation de NanoEdge
    • Installation de STM32cube
    • Installation de l'OS pour la Raspberry dans la carte micro SD
    • Prise en main de Nanoedge, de nucléo et de STM32cube
    • Début de réflexion sur l'application (métrologie)
  • Séance 2:
    • Mise en place du serveur python
    • Mise en place du client python
    • Test réussi de communication entre client et serveur via http
    • Programmation de la carte nucléo pour transfert de valeur via liaison série
    • Suite réflexion sur l'application (reconnaissance alphabet langue des signes, mouvement)
    • Choix de l'application : reconnaissance d'objets appliqué aux fournitures scolaires
    • Entraînement des modèles pour les différentes applications cités précédemment
    • Finalement : entraînement à la reconnaissance d'objets de fournitures scolaires


Code du serveur Python :

from http.server import HTTPServer, BaseHTTPRequestHandler</nowiki>

import json

import socket

# Stocker les requ  tes POST re  ues

post_requests = []

class CustomHTTPHandler(BaseHTTPRequestHandler):

   def do_GET(self):

       if self.path == '/':

           self.path = '/index.html'

       if self.path == '/data':

           self.send_response(200)

           self.send_header('Content-type', 'application/json')

           self.end_headers()

           self.wfile.write(bytes(json.dumps(post_requests), 'utf-8'))

           return

if self.path == '/index.html':

           self.send_response(200)

           self.send_header('Content-type', 'text/html')

           self.end_headers()

           # Cr  er le contenu HTML avec les donn  es POST

           content = '<html><body><h1>Donn  es POST:</h1><ul>'

           for item in post_requests:

               content += f'<li>{item}</li>'

           content += '</ul></body></html>'

           self.wfile.write(content.encode('utf-8'))

           return

       try:

file_to_open = open(self.path[1:]).read()

           self.send_response(200)

           self.send_header('Content-type', 'text/html')

           self.end_headers()

           self.wfile.write(bytes(file_to_open, 'utf-8'))

       except FileNotFoundError:

           self.send_error(404, 'File Not Found: %s' % self.path)

   def do_POST(self):

       content_length = int(self.headers['Content-Length'])

       post_data = self.rfile.read(content_length).decode('utf-8')

       # Ajouter les donn  es POST    la liste

       post_requests.append(post_data)

       # Envoyer une rponse HTTP

       self.send_response(200)

       self.end_headers()

self.wfile.write(b"POST request processed")

class HTTPServerV6(HTTPServer):

   address_family = socket.AF_INET6

if __name__ == '__main__':

   server_address = ('::', 8888)  #  ^icoute sur toutes les interfaces IPv6, p>

   httpd = HTTPServerV6(server_address, CustomHTTPHandler)

   print("Serveur actif sur le port", 8888)

   httpd.serve_forever()