4191| 0
|
[入门教程] 【掌控】网络授时的模拟时钟 |
我决定把网络时钟做为学习掌控网络功能的第一关。 它不用调用API,不调用很多库。 哈哈,就是它了。 【第一关】 联上网络: [mw_shl_code=python,true]from mpython import * #导入mpython模块 mywifi=wifi() #实例化wifi类 mywifi.connectWiFi("ssid","password") # WiFi连接,设置ssid 和password oled.fill(0) oled.DispChar('联网成功,IP为:',0,0) oled.DispChar(str(mywifi.sta.ifconfig()[0]),0,16) oled.show()[/mw_shl_code] 【知识点】 MicroPython network 模块用于配置WiFi连接。有两个WiFi接口,STA模式即工作站模式(ESP32连接到路由器), AP模式提供接入服务(其他设备连接到ESP32)。如需了解MicroPython的网络连接方法,请查阅 network 模块。 掌控板以基于network模块封装 mpython.wifi() 类简化wifi连接设置 注解 实例化wifi()后,会构建 sta 和 ap 两个对象。 sta 对象为工作站模式,通过路由器连接至网络。ap 为AP模式,提供热点接入。 您可以通过以下方式查看网络设置: mywifi.sta.ifconfig()注解 返回值4元组: (IP address, netmask, gateway, DNS) 在上面的代码中,修改oled.DispChar(str(mywifi.sta.ifconfig()[0]),0,16)中[]0为1/2/3,将会显示所接入网络的netmask, gateway, DNS,当然这时候同步修改上一行代码中的文字保持一致。 【网络授时时钟】 代码: [mw_shl_code=python,true]import ntptime,network from mpython import* from machine import Timer mywifi=wifi() mywifi.connectWiFi("ssid","password") try: ntptime.settime() except OSError : oled.DispChar("ntp链接超时,请重启!",0,20) oled.show() else: clock=UI.Clock(64,32,30) def Refresh(_): clock.settime() clock.drawClock() oled.show() clock.clear() tim1 = Timer(1) tim1.init(period=1000, mode=Timer.PERIODIC, callback=Refresh)[/mw_shl_code] 【学习笔记】 ntptime:NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。 network --- 网络配置该模块提供网络驱动程序和路由配置。此模块中提供了特定硬件的网络驱动程序,用于配置硬件网络接口。 异常处理try...except、raise 本程序中使用了try ....except...else 语句,当没有异常发生时,else中的语句将会被执行。 参考资料:https://www.cnblogs.com/Lival/p/6203111.html 代码中,尝试联网获取网络授时,如果联网没能获取到网络时间,则oled.DispChar("ntp链接超时,请重启!",0,20),否则成功获取到网络时间,则运行模拟时钟程序。 成功获取网络时间后,只要不断电,后面可以离开当前网络环境,时钟准确运行。 try: ntptime.settime() except OSError : oled.DispChar("ntp链接超时,请重启!",0,20) oled.show() else: clock=UI.Clock(64,32,30) def Refresh(_): clock.settime() clock.drawClock() oled.show() clock.clear() tim1 = Timer(1) tim1.init(period=1000, mode=Timer.PERIODIC, callback=Refresh)[/mw_shl_code] OSError 操作系统错误 好的,这个模拟时钟代码终于明白了。 【小提示】本代码需要最新mpython11.23基础库V1.0支持。 使用中如果出现报错261,请参考【掌控】新技能: clock--模拟时钟https://mc.dfrobot.com.cn/thread-273241-1-1.html 处理。 【12.25更新】 mpython2基础库已经更新到1.0.1,可以直接从软件刷最新库了。 掌控1.0.1固件已经推送,重新打开mPython2软件即可收到 1.0.1固件默认内置了mpython.py(基础库)、tinywebio.py(与app inventor通讯)、labplus_handpy_online.py(掌控在线协议,无需设为默认,用Labplus软件可以直接激活) 注意:板上的代码要备份一下再更新固件,不然会丢掉 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed