mywifi.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import network
  2. from machine import Timer
  3. SSID = "Xiaomi_eng"
  4. PASSWORD = "88888888"
  5. class MyWifi():
  6. _instance = None
  7. # 单例模式:WiFi实例化只能有一次,实例化多个 mywifi 对象将始终返回同一个-
  8. def __new__(cls, *args, **kwargs):
  9. if cls._instance is None:
  10. cls._instance = super().__new__(cls)
  11. return cls._instance # 返回的是内存地址
  12. def __init__(self, ssid=SSID, password=PASSWORD) -> None:
  13. self.ssid = ssid
  14. self.password = PASSWORD
  15. self.wlan = network.WLAN(network.STA_IF)
  16. self.wlan.active(True)
  17. self.tim = Timer(0)
  18. # 每 2000ms 定时回调一次 self.upload_data()
  19. self.tim.init(period=5000, mode=Timer.PERIODIC,callback=self.do_connect)
  20. self.connect_status = False
  21. def do_connect(self, timer):
  22. if not self.wlan.isconnected():
  23. print('connecting to network...')
  24. self.wlan.connect(SSID, PASSWORD)
  25. while not self.wlan.isconnected():
  26. pass
  27. print('network config:', self.wlan.ifconfig())
  28. self.connect_status = True
  29. # 松耦合设计原理:利用接口访问他们的状态,防止随意访问这个类的内部导致数据意外篡改
  30. def get_status(self):
  31. return self.connect_status
  32. if __name__ == '__main__':
  33. MyWifi()