如何使用NTP同步时间?

news/2025/3/17 8:55:55/文章来源:https://www.cnblogs.com/luatos/p/18503749

一、NTP通信概述

很多场景中,由于业务需要,模块需要保持正确的系统时钟,才能正常工作。但是模块上电后的初试时间戳是946713600(即2000/01/01,16:00:00),所以同步时钟成为了开发者要解决的重要问题。对于Cat.1模块,移动/电信卡,通常会下发基站时间,那么sntp就不是必要的,而联通卡通常不会下发,就需要sntp了。

NTP(NetworkTimeProtocol,网络时间协议)是用于同步系统时间的协议。它通过网络连接多个设备,确保这些设备的系统时钟保持一致。

本例程展示了如何使用SNTP授时服务来同步时间。

NTP和简化版的SNTP主要区别在于精确度和复杂性。
SNTP(SimpleNetworkTimeProtocol)通常用于不需要高精度同步的设备,如嵌入式系统。而NTP则用于要求较高时间精度的场景。

 

二、演示功能概述

本demo将连接NTP服务器进行时间同步。

三、准备硬件环境

3.1 Air780E开发板一套,包括天线、USB数据线;

 

图片

编辑

此核心板的详细使用说明参考:

Air780E产品手册:
https://docs.openluat.com/air780e/product/
<<开发板Core_Air780E使用说明V1.0.5.pdf>>,X.X.X指版本号;核心板使用过程中遇到任何问题,可以直接参考这份使用说明pdf文档。

3.2 SIM卡

请准备一张可正常上网的SIM卡,该卡可以是物联网卡或您的个人手机卡。

特别提醒:请确保SIM卡未欠费且网络功能正常,以便顺利进行后续操作。

3.3 数据通信线

typec接口USB数据线即可。

3.4 PC电脑

WINDOWS系统。

四、准备软件环境

4.1 基本的下载调试工具

使用说明参考Luatools下载和详细使用:
https://docs.openluat.com/Luatools

五、获取NTP授时软硬件资料

5.1 文档和工具

  • 780E模块使用固件:SDK&Demo-合宙文档中心,本demo使用的固件版本是:

    LuatOS-SoC_V1112_EC618_FULL.soc

  • 本教程使用的demo:

    https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/sntp

  • 将固件和脚本烧录到模块中:Luatools下载和使用教程-合宙模组资料中心

  • 源码和固件已打包,如下所示:右键点我,另存为,下载完整压缩文件包

5.2 demo使用api介绍

socket.sntp(sntp_server)

作用:sntp时间同步

传入值类型 解释

string/table

sntp服务器地址选填

int

适配器序号,
只能是socket.ETH0(外置以太网),
socket.LWIP_ETH(内置以太网),
socket.LWIP_STA(内置WIFI的STA),
socket.LWIP_AP(内置WIFI的AP),
socket.LWIP_GP(内置蜂窝网络的GPRS),
socket.USB(外置USB网卡),

如果不填,优先选择soc平台自带能上外网的适配器,
若仍然没有,选择最后一个注册的适配器。

返回值

os.time(mytime)

作用:时间戳函数

参数

传入值类型 解释

table

日期时间的table

return

时间戳

返回值

os.date(fmt,time)

作用:日期函数

参数

传入值类型 解释

string

格式化字符串,可以是nil

table

日期时间的table

返回值

返回值类型 解释

table/string

根据fmt的不同,返回值不同

json.encode(obj,t)

作用:将对象序列化为json字符串

参数

传入值类型 解释

obj

需要序列化的对象

string

浮点数精度和模式,
这项不存在的时候,为默认值”7f”,
数字只支持”0~14”,模式只支持”f/g”

返回值

返回值类型 解释

string

序列化后的json字符串,
失败的话返回nil

string

序列化失败的报错信息

json.decode(str)

作用:将字符串反序列化为对象

参数

传入值类型 解释

string

需要反序列化的json字符串

返回值

返回值类型 解释

obj

反序列化后的对象(通常是table),
失败的话返回nil

result

成功返回1,否则返回0

err

反序列化失败的报错信息

六、代码示例介绍

6.1 使用ntp服务器同步时间

6.1.1 demo介绍

 

图片

编辑

6.1.2 将程序下载到开发板

参考:将固件和脚本烧录到模块中:Luatools下载和使用教程-合宙模组资料中心(https://docs.openluat.com/Luatools/)

七、功能验证

 

图片

编辑

八、总结

本demo介绍了如何使用ntp服务器同步时间。

九、扩展

常见问题

9.1 ntp同步时间后,这个clock精度高吗,需要多久同步一次?

并不能保证任何时间任何地点都能百分百同步到正确的时间。所以,如果用户项目中的业务逻辑严格依赖于时间同步功能则不要使用本功能模块,建议使用自己的应用服务器来同步时间。

9.2 多长时间ntp同步一次?

正常使用,一小时一次,已经足够了,甚至1天一次也可以。

9.3 这个函数socket.sntp()后每次在程序中调用os.time也是实时时间了吗?

是的,只要时间同步成功了,就是实时时间了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/822248.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工地升降机AI人数识别系统

工地升降机人数识别系统采用了AI神经网络和深度学习算法,工地升降机AI人数识别系统通过升降机内置的摄像头实时监测轿厢内的人员数量。通过图像处理和人脸识别算法,系统能够精确地识别升降机内的人数。一旦系统识别到人数达到或者超过设定的阈值,工地升降机AI人数识别系统会…

楼道堆积物视觉识别监控系统

楼道堆积物视觉识别监控系统采用了AI神经网络和深度学习算法,楼道堆积物视觉识别监控系统通过摄像头实时监测楼道的情况,通过图像处理、物体识别和目标跟踪算法,系统能够精确地识别楼道通道是否被堆积物阻塞。楼道堆积物视觉识别监控系统检测到堆积物的存在,立刻通过告警信…

变电站人员安全作业行为识别监测系统

变电站人员安全作业行为识别监测系统采用了AI神经网络和深度学习算法,变电站人员安全作业行为识别监测系统通过利用已装好的监控摄像头,进行人员行为分析。针对未穿戴安全帽、工作服、安全马甲、绝缘靴等不符合安全要求的行为,系统能够实时识别并发出预警,提醒工作人员及时…

redis数据库操作指令

一、数据库操作指令 2、redis中库说明 对于一个redis服务而言,包含默认有16个数据库给我们使用,从0开始编号,共15号数据库,默认使用的是0号数据库 切换库,select 库号 举例:使用1号库:select 1 库和库之间数据不共享 库和库之间的键可以重名 2、redis中清空库的指令清空…

AI智能识别未穿工作服识别

AI智能识别未穿工作服识别系统采用了AI神经网络和深度学习算法,AI智能识别未穿工作服识别系统通过现场监控摄像头对特定区域内工人的穿戴情况进行实时监测和分析。系统经过大量的数据训练和算法优化,能够准确识别工人是否穿戴合规的工作服、反光衣、安全帽等装备。AI智能识别…

从零开始学五笔(五):撇区字根

介绍下撇区的字根讲解格式:先介绍按键的区位号、口诀内容、口诀说明 然后列每个字根能组成什么汉字,难拆字将用中括号标出‍ T 键 区位号:31 口诀:禾竹一撇双人立,反文条头共三一 说明:禾:一个字根竹:指的是竹字头 ⺮一撇:作为撇区的第一个键,有一个字根为 丿双人立:…

从零开始学五笔(七):折区字根

介绍下折区的字根讲解格式:先介绍按键的区位号、口诀内容、口诀说明 然后列每个字根能组成什么汉字,难拆字将用中括号标出‍ N 键 区位号:51 口诀:已半巳满不出己,左框折尸心和羽 说明:已半巳满不出己:指的是“已”,“巳”,“己”三个字的不同之处,“已”字半封口,“…

从零开始学五笔(六):捺区字根

介绍下捺区的字根讲解格式:先介绍按键的区位号、口诀内容、口诀说明 然后列每个字根能组成什么汉字,难拆字将用中括号标出‍ Y 键 区位号:41 口诀:言文方广在四一,高头一捺谁人去 说明:言:字根,还有个变体为言字旁“讠” 文,方,广,都是字根 高头:指的是“高”字的上…

从零开始学五笔(三):横区字根

介绍下横区的字根从 1 区开始讲解字根:先介绍按键的区位号、口诀内容、口诀说明 然后列每个字根能组成什么汉字,难拆字将用中括号标出‍ G 键 区位号:11 口诀:王旁青头戋(兼)五一 说明:王旁:指的是王字旁,也可以作为某个字根 青头:指的是「青」字的上半部分(头):龶…

fastdfs管理工具Go-fastdfs-web 安装教程

Go-fastdfs-web 安装教程 安装步骤下载:前往官方下载页面下载所需版本,选择带或不带JRE的安装包。设置权限:给安装文件赋予执行权限,命令为chmod +x goFastDfsWeb.sh。启动与停止:启动命令为./goFastDfsWeb.sh start,停止为stop,查看状态为status。配置与访问:默认端口…

LLM-Mixer: 融合多尺度时间序列分解与预训练模型,可以精准捕捉短期波动与长期趋势

近年来,大型语言模型(Large Language Models,LLMs)在自然语言处理领域取得了显著进展。受此启发,研究人员开始探索将LLMs应用于时间序列预测任务的可能性。由于时间序列数据与文本数据在特征上存在显著差异,直接将LLMs应用于时间序列预测仍面临诸多挑战。 为了解决这一问题,Jin…

2024.10.26 InfiniCLOUD WebDAV 简易登录器

2024.10.26 InfiniCLOUD WebDAV 简易登录器 ; ; 2024.10.26 InfiniCLOUD WebDAV 简易登录器 ; ; C:\APP\WinSCP\AHK\InfiniCLOUD.ahk ; ; WinSCP 一键登录InfiniCLOUD的WebDAV文件服务的AutoHotkey脚本源代码 #SingleInstance,force #Persistent ; 身份验证,请使用飞跃的 AHK …