« SE5 ECEAI/eceai 2023/2024/Brenier-Nguyen » : différence entre les versions
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> | |||
< | |||
import json | import json | ||
Ligne 25 : | Ligne 24 : | ||
import socket | import socket | ||
# 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): | |||
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': | 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() | 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") | self.wfile.write(b"POST request processed") | ||
Ligne 107 : | Ligne 106 : | ||
class HTTPServerV6(HTTPServer): | class HTTPServerV6(HTTPServer): | ||
address_family = socket.AF_INET6 | |||
if __name__ == '__main__': | 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() | |||
</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()