You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.3KB

  1. from telnetlib import Telnet
  2. import serial
  3. DEBUG = True
  4. class MAXCube:
  5. def __init__(self):
  6. self.client = None
  7. def disconnect(self):
  8. if self.client is not None:
  9. self.client.close()
  10. self.client = None
  11. def request(self, req):
  12. if self.client is not None:
  13. self.client.write(req.encode())
  14. self.client.write(b"\n")
  15. if DEBUG:
  16. print("SENT: {}".format(req))
  17. else:
  18. print("Request while not connected!")
  19. def set_moritz_mode(self, moritz_mode_enable):
  20. if moritz_mode_enable:
  21. self.request("Zr")
  22. #return self.response()
  23. else:
  24. self.request("Zx")
  25. def version_string(self):
  26. self.request("V")
  27. return self.response()
  28. def is_connected(self):
  29. return self.client is not None
  30. class CUN(MAXCube):
  31. def __init__(self):
  32. self.client: Telnet = None
  33. def connect(self, host, ip):
  34. if self.client is None:
  35. self.client = Telnet(host, ip)
  36. self.set_moritz_mode(True)
  37. def request(self, req):
  38. if self.client is not None:
  39. self.client.write(req.encode())
  40. self.client.write(b"\n")
  41. if DEBUG:
  42. print("SENT: {}".format(req))
  43. else:
  44. print("Request while not connected!")
  45. def response(self):
  46. if self.client is not None:
  47. response = self.client.read_some().decode()
  48. if DEBUG:
  49. print("RECV: {}".format(response))
  50. return response
  51. else:
  52. print("Waiting for response while not connected!")
  53. return None
  54. class CUL(MAXCube):
  55. def __init__(self, addr: str):
  56. self.client: serial.Serial = None
  57. self.addr = addr
  58. def connect(self, port):
  59. if self.client is None:
  60. self.client = serial.Serial(port, 38400, timeout=1)
  61. self.set_moritz_mode(True)
  62. def response(self):
  63. if self.client is not None:
  64. response = self.client.read(100).decode()
  65. if DEBUG:
  66. print("RECV: {}".format(response))
  67. return response
  68. else:
  69. print("Waiting for response while not connected!")
  70. return None