ardvindo-server.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/python3
  2. import serial
  3. import serial.tools.list_ports
  4. import time
  5. import datetime
  6. import socket
  7. import socketserver
  8. def log(msg):
  9. print("[" + str(datetime.datetime.now()) + "] " + msg)
  10. class Ardvindo:
  11. def __init__(self, comPort):
  12. self.comPort = comPort
  13. self.comConnection = serial.Serial(self.comPort, 9600, timeout = 0.5)
  14. # establishing an serial connection automatically resets the arduino
  15. # wait for arduino to restart
  16. time.sleep(4)
  17. if self._readline() == "ardvindo started":
  18. log("Connection established!")
  19. else:
  20. log("Failed to connect!")
  21. raise Exception("Failed to connect!")
  22. def _writeline(self, line):
  23. log("Sending '" + line + "'... ")
  24. self.comConnection.write(line.encode() + b"\n")
  25. def _readline(self):
  26. line = self.comConnection.readline().decode().strip()
  27. log("Received '" + line + "' !")
  28. return line
  29. def sendCommand(self, cmd):
  30. self.comConnection.flushInput()
  31. self._writeline(cmd)
  32. #ardvindo = Ardvindo(serial.tools.list_ports.comports()[0][0])
  33. ardvindo = Ardvindo("/dev/ardvindo")
  34. class ServerRequestHandler(socketserver.BaseRequestHandler):
  35. def handle(self):
  36. data = self.request[0].decode().strip()
  37. ardvindo.sendCommand(data)
  38. server = socketserver.UDPServer(('', 61291), ServerRequestHandler)
  39. log("Server is started!")
  40. log("Waiting for commands... ")
  41. server.serve_forever()