raspberry pi zero based drum machine
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

sWifi.py 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import FSM
  2. import utils as u
  3. import menus as m
  4. import os
  5. import socket
  6. #====================================
  7. State = type("State", (object,), {})
  8. #====================================
  9. class State(object):
  10. def __init__(self, FSM):
  11. self.FSM = FSM
  12. def Enter(self):
  13. pass
  14. def Execute(self):
  15. pass
  16. def Exit(self):
  17. pass
  18. class Wifi(State):
  19. def __init__(self,FSM):
  20. super(Wifi, self).__init__(FSM)
  21. def Enter(self):
  22. o = self.FSM.owner
  23. o.header_text = "Wifi"
  24. o.pub.register("beat", self)
  25. self.ipad = self.extract_ip()
  26. self.ssid = os.popen("sudo iwgetid -r").read()
  27. o.center_block(self.ipad, o.h2, [0, 0, o.width,o.height], o.light_grey)
  28. u.draw_header(o)
  29. self.draw_main(o)
  30. self.draw_footer(o)
  31. o.update_display(0)
  32. super(Wifi, self).Enter()
  33. def Execute(self):
  34. o = self.FSM.owner
  35. m.menu1_actions(self, o)
  36. if o.keyState[16] == 1:
  37. m.draw_menu1(o)
  38. o.update_display(0)
  39. elif o.keyState[16] == 4:
  40. u.draw_header(o)
  41. self.draw_main(o)
  42. self.draw_footer(o)
  43. o.update_display(0)
  44. if o.keyState[0] == 1 or o.keyState[0] == 3 or o.keyState[1] == 1 or o.keyState[1] == 3 or o.keyState[2] == 1 or o.keyState[2] == 3 or o.keyState[3] == 1 or o.keyState[3] == 3:
  45. u.draw_header(o)
  46. self.draw_main(o)
  47. self.draw_footer(o)
  48. o.update_display(0)
  49. if o.keyState[0] == 1 or o.keyState[1] == 1 or o.keyState[2] == 1 or o.keyState[3] == 1:
  50. self.FSM.ToTransition('toWifiSSID')
  51. def draw_main(self, o):
  52. o.center_block("SSID: " + self.ssid, o.h2, [0, 0, o.width, o.height-30], o.light_grey)
  53. o.center_block("IP: " + self.ipad, o.h2, [0, 20, o.width, o.height-30], o.light_grey)
  54. def extract_ip(self):
  55. st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  56. try:
  57. st.connect(("8.8.8.8", 80))
  58. IP = st.getsockname()[0]
  59. except Exception:
  60. IP = 'Network Failed'
  61. finally:
  62. st.close()
  63. return IP
  64. def draw_footer(self, o):
  65. _iter = 0
  66. width = o.width
  67. xpos = 0
  68. yposa = 135 - 25
  69. yposb = 135
  70. opts = ["Add New"]
  71. while _iter < 1:
  72. o.draw.rectangle((xpos, yposa, xpos + width, yposb), outline=0, fill=o.blue)
  73. if o.keyState[_iter] == 1:
  74. o.draw.rectangle((xpos, yposa, xpos + width, yposb), outline=0, fill=o.light_grey)
  75. o.center_block(opts[_iter], o.h2, [xpos,yposa,xpos + width,yposb], o.blue)
  76. else:
  77. o.center_block(opts[_iter], o.h2, [xpos,yposa,xpos + width,yposb], o.light_grey)
  78. xpos += width
  79. _iter += 1
  80. def ReceiveMessage(self, message):
  81. o = self.FSM.owner
  82. u.play_seq(o, message)
  83. def Exit(self):
  84. self.FSM.owner.pub.unregister("beat", self)
  85. #====================================