4377| 2
|
[入门教程] 【掌控】网络授时的数字时钟 |
早些时候写过一个帖子,讲到网络授时数字时钟,其实代码都是抄小唐的,我只是改了一小点,然后拿出去显摆。 出来混,早晚要还的,现在终于到把这段代码消化的时候了。 写代码时常常用到时间模块 import time time 模块提供用于获取当前时间和日期、测量时间间隔和延迟的函数。 这个帖子,主要用到一个新的(对我来说)函数。 【新知】 time.localtime() 将一个以秒计的时间转换为一个包含下列内容的8元组:(年、月、日、小时、分钟、秒、一周中某日、一年中某日)。若未提供秒或为None,则使用RTC时间。
【代码】 [mw_shl_code=python,true]import ntptime,network # 导入国际标准时间、网络模块 from mpython import* from machine import Timer # 导入计时模块 mywifi=wifi() mywifi.connectWiFi("ssid","password") # WiFi设置 try: ntptime.settime() except OSError : oled.DispChar("ntp链接超时,请重启!",0,20) oled.show() else: def get_time(_): #定义时钟刷屏时间 t = time.localtime() print("%d年%d月%d日 %d:%d:%d"%(t[0],t[1],t[2],t[3],t[4],t[5])) oled.DispChar("{}年{}月{}日" .format(t[0],t[1],t[2]),20,8) oled.DispChar("{}:{}:{}" .format(t[3],t[4],t[5]),38,25) oled.show() oled.fill(0) tim1 = Timer(1) tim1.init(period=1000, mode=Timer.PERIODIC, callback=get_time)[/mw_shl_code] 学习了前面网络授时模拟钟表的内容,其它的代码都挺明白了,重点是: def get_time(_): #定义时钟刷屏时间 t = time.localtime() print("%d年%d月%d日 %d:%d:%d"%(t[0],t[1],t[2],t[3],t[4],t[5])) oled.DispChar("{}年{}月{}日" .format(t[0],t[1],t[2]),20,8) oled.DispChar("{}:{}:{}" .format(t[3],t[4],t[5]),38,25) oled.show() oled.fill(0) 【time.localtime()】 上面有资料,将一个以秒计的时间转换为一个包含下列内容的8元组:(年、月、日、小时、分钟、秒、一周中某日、一年中某日)。若未提供秒或为None,则使用RTC时间。
print("%d年%d月%d日 %d:%d:%d"%(t[0],t[1],t[2],t[3],t[4],t[5])) 这句代码是让程序REPL同步输出time.localtime()给出的8元组内容中的前6项。 %d 格式符 十进制整数 依次对应后面()内元组的数据。 oled.DispChar("{}年{}月{}日" .format(t[0],t[1],t[2]),20,8) 格式化字符,{}对应填入format()元组中的内容。 好吧,新手小白,每学习一点都挺困难。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed