at_client.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import time
  2. import PikaStdDevice
  3. uart_g = None
  4. recv_g = ""
  5. wait_g = False
  6. def ClientCB(signal):
  7. global recv_g, wait_g
  8. recv_g = uart_g.read(128)
  9. wait_g = False
  10. class Client:
  11. def __init__(self, uart: PikaStdDevice.UART):
  12. global uart_g
  13. uart_g = uart
  14. uart_g.setCallBack(ClientCB, uart_g.SIGNAL_RX)
  15. def configMode(self):
  16. uart_g.write("+++")
  17. time.sleep(0.3)
  18. def cmd(self, cmd):
  19. global wait_g
  20. wait_g = True
  21. uart_g.write("AT+" + cmd + "\r\n")
  22. retry = 0
  23. while wait_g and retry < 10:
  24. retry += 1
  25. time.sleep(0.1)
  26. def get(self, arg):
  27. self.cmd(arg + "?")
  28. raw = self.res()
  29. for line in raw.split("\r\n"):
  30. if "+" + arg + ":" in line:
  31. return line.split(":")[1]
  32. def set(self, arg, val):
  33. self.cmd(arg + "=" + str(val))
  34. def res(self):
  35. return recv_g
  36. def __getattr__(self, name):
  37. return self.get(name)
  38. def __setattr__(self, name, value):
  39. self.set(name, value)