本篇文章說的是Air724UG低功耗模組軟件的NTP,我以整理成示例供大家快速參考。
一、簡介
網(wǎng)絡(luò)時間協(xié)議,英文名稱:Network Time Protocol(NTP)是用來使計算機(jī)時間同步化的一種協(xié)議,它可以使計算機(jī)對其服務(wù)器或時鐘源(如石英鐘,GPS 等等)做同步化,它可以提供高精準(zhǔn)度的時間校正(LAN 上與標(biāo)準(zhǔn)間差小于 1 毫秒,WAN 上幾十毫秒),且可介由加密確認(rèn)的方式來防止惡毒的協(xié)議攻擊。NTP 的目的是在無序的 Internet 環(huán)境中提供精確和健壯的時間服務(wù)。
二、演示功能概述
本教程教你如何使用開發(fā)板功能模塊采用多個免費(fèi)公共的 NTP 服務(wù)器來同步時間,但并不能保證任何時間任何地點(diǎn)都能百分百同步到正確的時間。所以,如果用戶項(xiàng)目中的業(yè)務(wù)邏輯嚴(yán)格依賴于時間同步功能,則不要使用使用本功能模塊,建議使用自己的應(yīng)用服務(wù)器來同步時間。
三、準(zhǔn)備硬件環(huán)境
3.1 開發(fā)板準(zhǔn)備
使用 EVB_Air724 開發(fā)板,如下圖所示:
此核心板的詳細(xì)使用說明參考:
https://docs.openluat.com/air724ug/product/
Air724UG 產(chǎn)品手冊中的《EVB_Air724UG_AXX 開發(fā)板使用說明》,寫這篇文章時最新版本的使用說明為:《EVB_Air724UG_A14 開發(fā)板使用說明》;開發(fā)板使用過程中遇到任何問題,可以直接參考這份使用說明文檔。
api文檔:
https://doc.openluat.com/wiki/21?wiki_page_id=2068
3.2 數(shù)據(jù)通信線
USB 數(shù)據(jù)線一根(micro USB)。
3.3 PC 電腦
WIN7 以及以上版本的 WINDOWS 系統(tǒng)。
3.4 SIM 卡
中國大陸環(huán)境下,可以上網(wǎng)的 SIM 卡。一般來說,使用移動,電信,聯(lián)通的物聯(lián)網(wǎng)卡或者手機(jī)卡都行。
3.5 組裝硬件環(huán)境
USB 數(shù)據(jù)線插入 USB 口,另一端與電腦相連,撥碼開關(guān)全部撥到 ON,串口切換開關(guān)選擇 UART1,USB 供電的 4V 對應(yīng)開關(guān)撥至 ON 檔,SIM 卡放到 SIM 卡槽中鎖緊,如下圖所示。
四、準(zhǔn)備軟件環(huán)境
4.1 下載調(diào)試工具
使用說明參考:
Luatools下載和詳細(xì)使用
https://docs.openluat.com/Luatools/
4.2 源碼及固件
1) 底層 core 下載
下載底層固件,并解壓
鏈接:
https://docs.openluat.com/air724ug/luatos/firmware/
如下圖所示,紅框的是我們要使用到的
2) 本教程使用的 demo 見附件:
https://gitee.com/openLuat/LuatOS-Air724UG/tree/master/script_LuaTask/demo/ntp
4.3 下載固件和腳本到開發(fā)板中
打開 Luatools,開發(fā)板上電開機(jī),如開機(jī)成功 Luatools 會打印如下信息。
點(diǎn)擊項(xiàng)目管理測試選項(xiàng)。
進(jìn)入管理界面,如下圖所示。
點(diǎn)擊選擇文件,選擇底層固件,我的文件放在 D:luatOSAir724 路徑中
點(diǎn)擊增加腳本或資源文件,選擇之前下載的程序源碼,如下圖所示。
點(diǎn)擊下載底層和腳本,下載完成如下圖所示。
五、代碼示例介紹
5.1 API 說明
ntp.timeSync(period, fnc, fun)
ntp 同步時間任務(wù).
重要提醒?。。。。?!
本功能模塊采用多個免費(fèi)公共的 NTP 服務(wù)器來同步時間,
并不能保證任何時間任何地點(diǎn)都能百分百同步到正確的時間。
所以,如果用戶項(xiàng)目中的業(yè)務(wù)邏輯嚴(yán)格依賴于時間同步功能,
則不要使用本功能模塊,建議使用自己的應(yīng)用服務(wù)器來同步時間。
例子
5.2 testNtp.lua 代碼
調(diào)用 ntp.timeSync()接口同步時間。ntp.timeSync()#同步一次時間
注意:本功能模塊采用多個免費(fèi)公共的 NTP 服務(wù)器來同步時間并不能保證任何時間任何地點(diǎn)都能百分百同步到正確的時間所以,如果用戶項(xiàng)目中的業(yè)務(wù)邏輯嚴(yán)格依賴于時間同步功能則不要使用使用本功能模塊,建議使用自己的應(yīng)用服務(wù)器來同步時間
調(diào)用 misc.getClock()接口獲取系統(tǒng)時間
5.3 main.lua 代碼
本代碼為主程序腳本,系統(tǒng)啟動后首先會對 4G 網(wǎng)絡(luò)進(jìn)行配置,等待網(wǎng)絡(luò)連接成功,然后加載 NTP 測試模塊。
六、開機(jī)調(diào)試
6.1 開發(fā)板開機(jī)
連接好硬件并下載固件后,啟動 Luatools 軟件,系統(tǒng)運(yùn)行信息將顯示在界面中。紅框中為開發(fā)板連接到 PC 機(jī)后正常打印的信息,如下圖所示。
6.2 NTP 調(diào)試
開機(jī)啟動后,ntp.timeSync()#同步一次時間,然后每隔一秒調(diào)用 misc.getClock()接口獲取系統(tǒng)時間。
七、常見問題
7.1 os.time()返回值,需不需要特別加載模塊?
返回從 1970 年 1 月 1 日到指定日期的時間的秒數(shù),無參數(shù)表示當(dāng)前時間。不需要添加操作,直接可以獲取。
os.date 這個 api 只支持 os.date(“*t”) 這樣用,不能 os.date(‘%Y-%m-%d %H:%M:%S’) 這樣用?
是的,不支持??梢园慈缦路绞教幚?/p>
7.2 ntp 同步時間后,這個 clock 精度高嗎,需要多久同步一次
并不能保證任何時間任何地點(diǎn)都能百分百同步到正確的時間。所以,如果用戶項(xiàng)目中的業(yè)務(wù)邏輯嚴(yán)格依賴于時間同步功能 則不要使用本功能模塊,建議使用自己的應(yīng)用服務(wù)器來同步時間。
7.3 ntp.timeSync(24,fnc)時間同步說明
立即同步一次,之后每隔 24 小時自動同步一次,每次同步結(jié)束后執(zhí)行 fnc(time,result)
7.4 ntp.timeSync() 請問這個函數(shù)是異步執(zhí)行的還是執(zhí)行完成之后,其后的代碼才會執(zhí)行?
獲取時間是通過 sys.taskInit 創(chuàng)建一個時間任務(wù)來同步時間的,模塊會隨機(jī)嘗試訪問每一個 NTP 服務(wù)器,嘗試 1 次,如果成功,如果不需循環(huán)同步時間,則退出當(dāng)前線程,運(yùn)行別的代碼,否則同通過 sys.wait(period)掛起當(dāng)前任務(wù)循環(huán)同步時間,運(yùn)行別的代碼,時間到之后重新運(yùn)行當(dāng)前任務(wù)。如果失敗,通過 sys.wait(1000)掛起當(dāng)前任務(wù) 1 秒,運(yùn)行別的代碼,1 秒時間到,在嘗試訪問下一個服務(wù)器,循環(huán)操作,直到同步時間成功,或服務(wù)器全部訪問結(jié)束,之后按照成功之后的動作執(zhí)行。
7.5 有個這個函數(shù)后 ntp.timeSync(1) 每次在程序中調(diào)用 os.time 也是實(shí)時時間了嗎?
是的,只要時間同步成功了,就是實(shí)時時間了。
審核編輯 黃宇
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44557瀏覽量
372750 -
低功耗
+關(guān)注
關(guān)注
10文章
2396瀏覽量
103670 -
NTP
+關(guān)注
關(guān)注
1文章
169瀏覽量
13890
發(fā)布評論請先 登錄
相關(guān)推薦
評論