| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | 
							- #!/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 = None
 
-         self.connect()
 
-     def connected(self):
 
-         return self.comConnection != None and self.ping()
 
-     def reconnect(self):
 
-         while True:
 
-             if self.comConnection != None:
 
-                 self.comConnection.close()
 
-             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!")
 
-                 break
 
-             else:
 
-                 log("Failed to connect!")
 
-     def connect(self):
 
-         if not self.connected():
 
-             self.reconnect()   
 
-     def ping(self):
 
-         return self.sendCommand("i") == "ardvindo"
 
-     def _readline(self):
 
-         line = self.comConnection.readline().decode().strip()
 
-         log("Received '" + line + "' !")
 
-         return line
 
-     def sendCommand(self, cmd):
 
-         log("Sending command '" + cmd + "' ...")
 
-         self.comConnection.write((cmd + "\n").encode())
 
-         return self._readline()
 
- ardvindo = Ardvindo(serial.tools.list_ports.comports()[0][0])
 
- 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()
 
 
  |