#!/usr/bin/python3 import serial import serial.tools.list_ports import time import datetime import socket import socketserver def log(msg): print("[" + str(datetime.datetime.now()) + "] " + msg) class Ardvindo: def __init__(self, comPort): self.comPort = comPort self.comConnection = serial.Serial(self.comPort, 9600, timeout = 0.5) # establishing an serial connection automatically resets the arduino # wait for arduino to restart time.sleep(4) if self._readline() == "ardvindo started": log("Connection established!") else: log("Failed to connect!") raise Exception("Failed to connect!") def _writeline(self, line): log("Sending '" + line + "'... ") self.comConnection.write(line.encode() + b"\n") def _readline(self): line = self.comConnection.readline().decode().strip() log("Received '" + line + "' !") return line def sendCommand(self, cmd): self.comConnection.flushInput() self._writeline(cmd) #ardvindo = Ardvindo(serial.tools.list_ports.comports()[0][0]) ardvindo = Ardvindo("/dev/ardvindo") class ServerRequestHandler(socketserver.BaseRequestHandler): def handle(self): data = self.request[0].decode().strip() ardvindo.sendCommand(data) server = socketserver.UDPServer(('', 61291), ServerRequestHandler) log("Server is started!") log("Waiting for commands... ") server.serve_forever()