123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #!/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()
|