VxWorks中实现时间同步的方法

作者:佚名 上传时间:2023-05-22 运行软件:Wind River Systems 软件版本:VxWorks 6.9 版权申诉

本示例代码实现了VxWorks系统中实现与NTP服务器的时间同步的方法,通过设置VxWorks系统中的时间服务参数,将与NTP服务器进行时间校准同步,确保VxWorks系统中的时钟与NTP服务器时间同步。

/*
    * Set the system clock from an NTP update.
    */
    STATUS ntpTimeSync (char *pServer)
    {
        struct sockaddr_in  serverAddr;
        STATUS          status;
        int             s;
        time_t t;
        double stime = 0.0;

        /* update the sntp client library before starting */
        if (sntp_init() != OK)
        {
            printf("can't initialize sntp\n");
            return ERROR;
        }

        memset((char *)&serverAddr, 0, sizeof(serverAddr));

        serverAddr.sin_family = AF_INET;
        serverAddr.sin_len = sizeof (serverAddr);
        serverAddr.sin_port = htons (SNTP_PORT);
        serverAddr.sin_addr.s_addr = inet_addr (pServer);

        if ((s = socket (AF_INET, SOCK_DGRAM, 0)) < 0)
        {
            perror ("socket:");
            return ERROR;
        }

        if (connect (s, (struct sockaddr *)&serverAddr, sizeof (serverAddr)) < 0)
        {
            perror ("connect:");
            close (s);
            return ERROR;
        }

        sntpTimeQuery(s);

        if (sntpTimeGet(&t, &stime))
        {
            printf ("NTP server unavailable\n");
            close (s);
            return ERROR;
        }

        close(s);

        if (stime == 0.0) {
            if (time (NULL) == (time_t) -1)
                printf("can't set time\n");
                return ERROR;
        } else {
            struct timeval tv;

            tv.tv_sec = (long)t;
            tv.tv_usec = (long)(stime * 1000000.0);

            if (settimeofday (&tv, NULL) < 0)
            {
                printf("can't set time\n");
                return ERROR;
            }
        }

        return OK;
    }

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
VxWorks实现时间同步方法
本示例代码实现了VxWorks系统中实现与NTP服务器的时间同步的方法,通过设置VxWorks系统中的时间服务参数,将与NTP服务器进行时间校准同步,确保VxWorks系统中的时钟与NTP服务器时间同
VxWorks 6.9
Wind River Systems
2023-05-22 20:16
VxWorks如何实现系统时间同步
VxWorks是一个实时操作系统,为了保证系统的正确运行,需要对系统时间进行同步。本示例代码将介绍如何在VxWorks中使用SNTP协议实现系统时间同步。#include <sntpcLib.
VxWorks 6.9
Wind River Systems
2023-04-01 07:20
VxWorks如何实现时间同步
在嵌入式领域,时间同步是非常重要的一项功能。本示例展示了如何在VxWorks系统下使用NTP协议实现时间同步。使用NTP协议可以从网络时间服务器上获取时间信息进行同步。#include <sy
VxWorks 7.0
Wind River
2023-05-19 08:51
VxWorks实现多线程同步方法
本文介绍了在VxWorks实现多线程同步的方法,通过信号量来实现多个任务的同步操作。示例代码中展示了如何定义信号量、初始化、进行P操作和V操作等操作,以及如何使用信号量进行同步。#include &
VxWorks 6.9
VxWorks
2023-04-03 02:09
VxWorks实现进程同步方法
本文介绍了在VxWorks中实现进程同步的方法。主要是通过使用VxWorks提供的信号量来控制进程之间的同步和互斥。#include <vxWorks.h>#include <s
VxWorks 6.9
Wind River Systems
2023-04-21 13:14
JavaScript实现同步于本地时间动态时间显示方法
主要介绍了JavaScript实现同步于本地时间的动态时间显示方法,实例分析了javascript获取本地时间及动态显示的技巧,并对实现代码进行了较为详尽的分析说明,需要的朋友可以参考下
PDF
50KB
2020-11-06 21:10
Vxworks设定时间
VxWorks的系统时间设定。从BIOS中取得时间,并设定系统的时间为该标准时间。
C
0B
2020-05-24 19:30
VxWorks实现时间同步解决方案
这是一种VxWorks操作系统下实现时间同步的解决方案,可以通过将系统时间同步到NTP服务器来保证系统的时间准确性。实现方式为通过SNTP协议从NTP服务器获取时间并同步到本地系统。#include
VxWorks 6.x
Wind River Systems
2023-03-18 13:38
VxWorks实现任务同步和互斥方法
在VxWorks操作系统中,为了保证多个任务之间的同步和互斥,需要使用一些特殊的工具和方法来实现。本示例代码展示了如何使用VxWorks提供的信号量(semaphore)和任务锁(mutex)来实现任
VxWorks 6.9
Wind River Systems
2023-04-26 20:37
linux时间同步方法
linux时间同步方法: 时间服务器校对 其他服务器校对
0B
2019-01-04 03:53