【掌控】网络授时的模拟时钟
我决定把网络时钟做为学习掌控网络功能的第一关。它不用调用API,不调用很多库。
哈哈,就是它了。
【第一关】
联上网络:
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,16)
oled.show()
【知识点】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,16)中[]0为1/2/3,将会显示所接入网络的netmask, gateway, DNS,当然这时候同步修改上一行代码中的文字保持一致。
【网络授时时钟】
代码:
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)
【学习笔记】
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)
OSError 操作系统错误
好的,这个模拟时钟代码终于明白了。
{:5_151:}
【小提示】本代码需要最新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软件可以直接激活)
注意:板上的代码要备份一下再更新固件,不然会丢掉
页:
[1]