• 用什么函数,可以获取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

  • 相关阅读:
    阶段一-01.万丈高楼,地基首要-第3章 用户登录注册模块开发-3-13 实现用户信息在页面显示
    阶段一-01.万丈高楼,地基首要-第3章 用户登录注册模块开发-3-12 回顾cookie与session
    阶段一-01.万丈高楼,地基首要-第3章 用户登录注册模块开发-3-11 实现用户登录
    阶段一-01.万丈高楼,地基首要-第3章 用户登录注册模块开发-3-10 设置跨域配置实现前后端联调
    阶段一-01.万丈高楼,地基首要-第3章 用户登录注册模块开发-3-9 使用tomcat运行前端源码
    阶段一-01.万丈高楼,地基首要-第3章 用户登录注册模块开发-3-8 优化Swagger2显示
    阶段一-01.万丈高楼,地基首要-第3章 用户登录注册模块开发-3-6 整合Swagger2文档api
    Swift实现Touch ID验证
    Mac上phantomjs装了不能用的解决
    after modifying system headers, please delete the module cache at
  • 原文地址:https://www.cnblogs.com/dapangsen/p/11416066.html
Copyright © 2020-2023  润新知