timeSync.lua 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. --- 模块功能:时间同步.
  2. -- 注意:本文件仅仅演示了基站同步和NTP同步两种方案,此两种方案都不是百分百可靠
  3. -- 如果产品需要百分百时间同步,则建议使用自建服务器方案来实现
  4. -- @author openLuat
  5. module(...,package.seeall)
  6. require"ril"
  7. require"ntp"
  8. local function printTime()
  9. local tClock = os.date("*t")
  10. log.info("printTime",
  11. string.format("%04d-%02d-%02d %02d:%02d:%02d",tClock.year,tClock.month,tClock.day,tClock.hour,tClock.min,tClock.sec))
  12. end
  13. --每隔1秒输出1次当前模块系统时间
  14. sys.timerLoopStart(printTime,1000)
  15. --bTimeSyned :时间是否已经成功同步过
  16. local bTimeSyned
  17. --注册基站时间同步的URC消息处理函数
  18. ril.regUrc("+NITZ", function()
  19. log.info("cell.timeSync")
  20. printTime()
  21. bTimeSyned = true
  22. end)
  23. --IP网络准备就绪后,如果基站尚未成功同步时间,则尝试使用NTP同步时间
  24. sys.subscribe("IP_READY_IND", function()
  25. if not bTimeSyned then
  26. ntp.timeSync(nil,function(tClock,success)
  27. log.info("ntp.timeSync",success)
  28. printTime()
  29. bTimeSyned = success
  30. end)
  31. end
  32. end)
  33. --如果NTP时间同步失败,并且存在用户自建服务器同步时间的方案,则自行实现自建服务器同步时间代码