« SE5 ECEAI/eceai 2023/2024/Brenier-Nguyen » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 15 : | Ligne 15 : | ||
**Entraînement des modèles pour les différentes applications cités précédemment | **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 | **Finalement : entraînement à la reconnaissance d'objets de fournitures scolaires | ||
Code du serveur Python : | |||
<nowiki><code>from http.server import HTTPServer, BaseHTTPRequestHandler</nowiki> | |||
import json | |||
import socket | |||
<nowiki>#</nowiki> 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 = '<nowiki><html><body><h1>Donn es POST:</h1></nowiki><nowiki><ul>'</nowiki> | |||
for item in post_requests: | |||
content += f'<nowiki><li>{item}</li></nowiki>' | |||
content += '<nowiki></ul></nowiki><nowiki></body></nowiki><nowiki></html></nowiki>' | |||
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() <nowiki></code></nowiki> |
Version du 18 décembre 2023 à 16:34
- 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 :
<code>from http.server import HTTPServer, BaseHTTPRequestHandler
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() </code>