S&B Volcano vaporizer remote control with Pi Pico W
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

state_connect.py 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/usr/bin/env python
  2. import uasyncio as asyncio
  3. class StateConnect:
  4. def __init__(self, lcd, state):
  5. self.lcd = lcd
  6. self.state = state
  7. self.lock = asyncio.Lock()
  8. def enter(self, val = None):
  9. self.done = False
  10. self.client = None
  11. self.connector = asyncio.create_task(self.connect(val))
  12. def exit(self):
  13. self.connector.cancel()
  14. if self.lock.locked():
  15. self.lock.release()
  16. return self.client
  17. async def connect(self, d):
  18. async with self.lock:
  19. self.done = False
  20. if self.state:
  21. client = await d.device.connect()
  22. else:
  23. await d[0].disconnect()
  24. client = None
  25. async with self.lock:
  26. self.done = True
  27. self.client = client
  28. async def draw(self):
  29. self.lcd.fill(self.lcd.black)
  30. self.lcd.text("Volcano Remote Control App", 0, 0, self.lcd.green)
  31. self.lcd.text("Connecting to Bluetooth device", 0, 10, self.lcd.red)
  32. if self.state:
  33. self.lcd.text("Connecting...", 0, int(self.lcd.height / 2) - 5, self.lcd.white)
  34. else:
  35. self.lcd.text("Disconnecting...", 0, int(self.lcd.height / 2) - 5, self.lcd.white)
  36. keys = self.lcd.buttons()
  37. if keys.once("y"):
  38. print("user abort")
  39. if self.state:
  40. return 5 # disconnect
  41. else:
  42. return 0 # scan
  43. async with self.lock:
  44. if self.done:
  45. if self.state:
  46. return 2 # selection
  47. else:
  48. return 0 # scan
  49. else:
  50. if self.state == False:
  51. self.lcd.text("Disconnecting...", 0, 100, self.lcd.white)
  52. else:
  53. self.lcd.text("Connecting...", 0, 100, self.lcd.white)
  54. self.lcd.show()
  55. return -1 # stay in this state