打印
[机智云IoT云服务]

用什么函数,可以获取NTP网络时间

[复制链接]
604|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
z3512641347|  楼主 | 2019-8-27 08:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用什么函数,可以获取NTP网络时间
摘要:在机智云自助开发平台开发一款智能设备有很多在线工具快速实现,若需要获取时间,依靠MCU本身自带的时钟比较麻烦,是否可以直接使用函数调用外界时间呢?机智云有什么API可以用来获取网络时间呢?
答案是有这么一个函数gizwitsGetNTP( )可以获取网络时间,我们机友用这个函数实现了水墨画定时控制系统、节点的时间同步、采集地震的波形时进行每个节点的数据同步。

[ 什么是NTP网络协议]
网络时间同步现在有2种同步协议NTP和PTP,NTP与PTP不同在于时间戳的产生位置。NTP是通过软件来记录协议相关网络包的发出和到达时刻,受操作系统影响很大(系统约忙,延时越大)。同步精度优于10ms。

什么是NTP网络协议
  • 用于同步它所有客户端时钟的服务。NTP服务器将本地系统的时钟与一个公共的NTP服务器同步然后作为时间主机提供服务,使本地网络的所有客户端能同步时钟。
NTP时间服务器是一个简单的常用的服务器,工作中我们只要做到会用就行,能搭建起来就可以了,不用太去深入研究ntp时间服务器的原理。

为什么需要NTP服务,主要原因有两个
  • 网络上的各台计算机上的时间不同步:不同步的原因有很多,比如手动修改了操作系统的时间,比如CMOS电池重置导致的时间复位等等。
  • 网络上的各台计算机时间不精确:我们所使用的钟表,精度有一定的误差,一般较高的精度平均每年也会达到一分钟左右的误差,虽然对日常使用基本不造成影响,但是在计算机的世界这已经会造成问题。
实际业务需求中由于两台server的时间不一致。导致漏数据。损失巨大,被user批的不行不行的。还好IT有一台 server 专门用来校时,使用机智云平台开发物联网设备时,通常使用使用gizwtisGetNTP函数来实现。

什么是准确的
  • 目前最为准确的装备是什么呢?
  • 原子钟是目前世界上最准确的计时工具,它在20世纪50年代出现,利用院子袖手或释放能量是发射出的电磁波来计时,非常稳定,再加上一些列精密仪器的控制,可以达到2000万年才误差1秒,这个精确度基本能够实现目前所有的需求。

为什么不能直接使用格林威治时间
  • 格林威治时间是以地球自转为基础的,而由于地球自转本身就不规则,而且在缓慢加速。因为格林威治时间计时的基础都存在偏差,所以格林威治时间已经不再作为标准时间使用。

什么是新的标准时间
  • 缩写为UTC(Universal Time Coordinated)的世界协调时是准确的标准时间,UTC正式使用原子钟进行报时的国际标准时间。

获取的方式
  • 而获取的方式也多种,可以通过卫星,比如GPS或者北斗。也可以直接从网络上的NTP服务器进行获取。

[ gizwitsGetNTP函数 ]

基于机智云的物联网设备开发如何进行获取NTP网络时间,参考方式有两种
1)视频教学操作版:https://b23.tv/av61558323
特点:此方法通俗易懂,代码添加原理、修改位置均知道
准备材料:机智云自助开发平台账号、开发版、机智云APP
作用:节点的时间同步、采集地震的波形时进行每个节点的数据同步,调用gizwisGetNTP函数即可实现。
第一步:需要配网成功才能获取精确时间 (配网成功返回一个值,添加一个标志位和变量,记住当前是否联网的状态)。
第二步:调用gizwitsGetNTP函数时不能一直调用,所以我们这里设置两个定时器,(定时器初始化和一秒钟的时间值)。
第三步:在中断函数中编写相关代码(联网成功时请求获取时间、以及打印时间的函数)。
第四步:将程序编译,无问题,则将程序下载到开发版中。
第四步:打开机智云APP,进行配网,配网成功后,可以在XCOM中查看打印出的时间。

2)水墨画定时控制系统之Gokit时间获取及其分析:http://club.gizwits.com/thread-8037-1-1.html

3)MCU请求网络时间例程:http://club.gizwits.com/thread-4088-1-1.html

4)Arduino获取网络时间:http://club.gizwits.com/thread-165362-1-1.html

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

37

帖子

1

粉丝