第 3 章 - Azure RTOS NetX Duo SNTP 客户端服务说明

本章按字母顺序介绍了所有 Azure RTOS NetX Duo SNTP 客户端服务(如下所列)。

在以下 API 说明的“返回值”部分中,以粗体显示的值不受定义用于禁用 API 错误检查的 NX_DISABLE_ERROR_CHECKING 影响,而不以粗体显示的值会被完全禁用。

nx_sntp_client_create

创建 SNTP 客户端

原型

UINT nx_sntp_client_create(
    NX_SNTP_CLIENT *client_ptr, 
    NX_IP *ip_ptr,  
    UINT iface_index, 
    NX_PACKET_POOL *packet_pool_ptr, 
    UINT (*leap_second_handler)(
        NX_SNTP_CLIENT *client_ptr, 
        UINT indicator), 
    UINT (*kiss_of_death_handler)(
        NX_SNTP_CLIENT *client_ptr, 
        NX_SNTP_TIME_MESSAGE *server_time_msg),
    VOID (random_number_generator)(
        struct NX_SNTP_CLIENT_STRUCT *client_ptr, 
        ULONG *rand));
    

说明

此服务可创建 SNTP 客户端实例。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针
  • ip_ptr:指向客户端 IP 实例的指针
  • iface_index:SNTP 网络接口的索引
  • packet_pool_ptr:指向客户端数据包池的指针
  • leap_second_handler:回调应用程序对即将发生的闰秒的响应
  • kiss_of_death_handler:回调应用程序对接收死神之吻 (Kiss of Death) 数据包的响应
  • random_number_generator:回调随机数生成器服务

返回值

  • NX_SUCCESS (0x00) 客户端创建成功

  • NX_SNTP_INSUFFICIENT_PACKET_PAYLOAD (0xD2A) 非指针输入无效

  • NX_PTR_ERROR (0x07) 指针输入无效

  • NX_INVALID_INTERFACE (0x4C) 网络接口无效

获准方式

初始化、线程

示例

/* Create the SNTP Client on the primary interface. */
UINT iface_index = 0;
status =  nx_sntp_client_create(&demo_client, 
                     iface_index, &client_ip, 
&client_packet_pool, leap_second_handler, 
                    kiss_of_death_handler, 
NULL /* no random_number_generator callback */);

/* If status is NX_SUCCESS an SNTP Client instance was successfully
   created.  */

nx_sntp_client_delete

删除 SNTP 客户端

原型

UINT nx_sntp_client_delete(NX_SNTP_CLIENT *client_ptr);

说明

此服务可删除 SNTP 客户端实例。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针

返回值

  • NX_SUCCESS (0x00) 客户端创建成功

  • NX_PTR_ERROR (0x07) 指针输入无效

  • NX_CALLER_ERROR (0x11) 无效的服务调用方

允许来自

线程数

示例

/* Delete the SNTP Client. */
status =  nx_sntp_client_delete(&demo_client);

/* If status is NX_SUCCESS an SNTP Client 
   instance was successfully deleted.  */

nx_sntp_client_get_local_time

获取 SNTP 客户端本地时间

原型

UINT nx_sntp_client_get_local_time(
    NX_SNTP_CLIENT *client_ptr , 
    ULONG *seconds, 
    ULONG *fraction, 
    CHAR *buffer);

说明

此服务使用选项缓冲区指针输入来获取 SNTP 客户端本地时间,以接收字符串消息格式的数据。

此服务已弃用。 鼓励开发人员迁移到 nx_sntp_client_get_local_time_extended()。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针

  • seconds:指向本地时间秒数的指针

  • fraction:本地时间小数部分

  • buffer:指向缓冲区以写入时间数据的指针

返回值

  • NX_SUCCESS (0x00) 客户端创建成功

  • NX_PTR_ERROR (0x07) 指针输入无效

  • NX_CALLER_ERROR (0x11) 无效的服务调用方

允许来自

线程数

示例

/* Get the SNTP Client local time without the 
   string message option. */

ULONG base_seconds;
ULONG base_fraction;

status =  nx_sntp_client_get_local_time(&demo_client, 
                                       &base_seconds, 
              				           &base_fraction, 
                                       NX_NULL);
/* If status is NX_SUCCESS an SNTP Client time was successfully
   retrieved.  */

nx_sntp_client_get_local_time_extended

获取延长的 SNTP 客户端本地时间

原型

UINT nx_sntp_client_get_local_time_extended(
    NX_SNTP_CLIENT *client_ptr,
    ULONG *seconds, 
    ULONG *fraction, 
    CHAR *buffer
    UINT buffer_size);

说明

此服务使用选项缓冲区指针输入来获取延长的 SNTP 客户端本地时间,以接收字符串消息格式的数据。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针

  • seconds:指向本地时间秒数的指针

  • fraction:指向小数部分的指针

  • buffer:指向缓冲区以写入时间数据的指针

  • buffer_size:缓冲区的长度

返回值

  • NX_SUCCESS (0x00) 客户端创建成功

  • NX_PTR_ERROR (0x07) 指针输入无效

  • NX_CALLER_ERROR (0x11) 无效的服务调用方

  • NX_SIZE_ERROR (0x09) 检查 buffer_size 失败

允许来自

线程数

示例

/* Get the SNTP Client local time without the 
   string message option. */

#define BUFSIZE 50

ULONG seconds;
ULONG fraction;
CHAR  buffer[BUFSIZE];

status =  nx_sntp_client_get_local_time_extended(&demo_client, 
                                                &seconds, 
              				                    &fraction, 
                                                buffer, 
                                                BUFSIZE);

/* If status is NX_SUCCESS an SNTP Client 
   time was successfully retrieved.  */

nx_sntp_client_initialize_broadcast

为广播操作初始化客户端

原型

UINT nx_sntp_client_initialize_broadcast(
    NX_SNTP_CLIENT *client_ptr,
    ULONG multicast_server_address, 
    ULONG broadcast_time_servers);


说明

此服务通过设置 SNTP 服务器 IP 地址并初始化 SNTP 启动参数和超时来为广播操作初始化客户端。 如果多播和广播地址均不为 NULL,则选择多播地址。 如果两个地址均为 NULL,则将返回错误。 请注意,此地址仅支持 IPv4 服务器地址。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针

  • multicast_server_address:SNTP 多播地址

  • broadcast_time_server:SNTP 服务器广播地址

返回值

  • NX_SUCCESS (0x00) 客户端创建成功

  • NX_INVALID_PARAMETERS (0x4D) 非指针输入无效

  • NX_PTR_ERROR (0x07) 指针输入无效

  • NX_CALLER_ERROR (0x11) 无效的服务调用方

允许来自

初始化、线程

示例

/* Initialize the client for broadcast operation.  */
status =  nx_sntp_client_initialize_broadcast(client_ptr,0x0,
                            NX_NULL, IP_ADDRESS(192,2,2,255);

/* If status is NX_SUCCESS the Client 
   was successfully initialized.  */

nxd_sntp_client_initialize_broadcast

为 IPv4 或 IPv6 广播操作初始化客户端

原型

UINT nxd_sntp_client_initialize_broadcast(
    NX_SNTP_CLIENT *client_ptr,
    NXD_ADDRESS *multicast_server_address, 
    NXD_ADDRESS *broadcast_server_address);

说明

此服务通过设置 SNTP 服务器 IP 地址并初始化 SNTP 启动参数和超时来为广播操作初始化客户端。 如果广播和多播地址指针均不为 NULL,则选择多播地址。 如果两个地址指针均为 NULL,则将返回错误。 此地址支持 IPv4 和 IPv6 地址类型。 请注意,IPv6 不支持广播,因此如果广播地址指针设置为 IPv6,将返回错误。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针

  • multicast_server_address:SNTP 服务器多播地址

  • broadcast_server_address:SNTP 服务器广播地址

返回值

  • NX_SUCCESS (0x00) 已成功初始化客户端

  • NX_SNTP_PARAM_ERROR (0xD0D) 非指针输入无效

  • NX_PTR_ERROR (0x07) 指针输入无效

  • NX_CALLER_ERROR (0x11) 无效的服务调用方

允许来自

初始化、线程

示例

/* Initialize the client for broadcast operation.  */
NXD_ADDRESS broadcast_server;

Broadcast_server.nxd_ip_address = NX_IP_VERSION_V6;
Broadcast_server.nxd_ip_address.v6[0] = 0x20010db1;
Broadcast_server.nxd_ip_address.v6[1] = 0x0f101;
Broadcast_server.nxd_ip_address.v6[2] = 0x0;
Broadcast_server.nxd_ip_address.v6[3] = 0x101;

status =  nxd_sntp_client_initialize_broadcast(client_ptr,0x0,
                                  NX_NULL, &broadcast_server)


/* If status is NX_SUCCESS the Client 
   was successfully initialized.  */

nx_sntp_client_initialize_unicast

设置 SNTP 客户端以在单播中运行

原型

UINT nx_sntp_client_initialize_unicast(
    NX_SNTP_CLIENT * client_ptr, 
    ULONG unicast_time_server);

说明

此服务通过设置 SNTP 服务器 IP 地址并初始化 SNTP 启动参数和超时来为单播操作初始化客户端。 请注意,此地址仅支持 IPv4 服务器地址。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针

  • unicast_time_server:SNTP 服务器 IP 地址

返回值

  • NX_SUCCESS (0x00) 已成功初始化客户端

  • NX_INVALID_PARAMETERS (0x4D) 非指针输入无效

  • NX_PTR_ERROR (0x07) 指针输入无效

  • NX_CALLER_ERROR (0x11) 无效的服务调用方

允许来自

初始化、线程

示例

/* Initialize the Client for unicast operation.  */
status =  nx_sntp_client_initialize_unicast(&client_ptr, 
                                 IP_ADDRESS(192,2,2,1));


/* If status is NX_SUCCESS the Client 
   is initialized for unicast operation.  */

nxd_sntp_client_initialize_unicast

设置 SNTP 客户端以在 IPv4 或 IPv6 单播中运行

原型

UINT nxd_sntp_client_initialize_unicast(
    NX_SNTP_CLIENT * client_ptr, 
    NXD_ADDRESS *unicast_time_server);

说明

此服务通过设置 SNTP 服务器 IP 地址并初始化 SNTP 启动参数和超时来为单播操作初始化客户端。 此地址支持 IPv4 和 IPv6 地址类型。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针

  • unicast_time_server:SNTP 服务器 IP 地址

返回值

  • NX_SUCCESS (0x00) 已成功初始化客户端

  • NX_INVALID_PARAMETERS (0x4D) 非指针输入无效

  • NX_PTR_ERROR (0x07) 指针输入无效

  • NX_CALLER_ERROR (0x11) 无效的服务调用方

允许来自

初始化、线程

示例

/* Initialize the Client for unicast operation.  */
NXD_ADDRESS unicast_server;

unicast _server.nxd_ip_address = NX_IP_VERSION_V6;
unicast _server.nxd_ip_address.v6[0] = 0x20010db1;
unicast _server.nxd_ip_address.v6[1] = 0x0f101;
unicast _server.nxd_ip_address.v6[2] = 0x0;
unicast _server.nxd_ip_address.v6[3] = 0x101;

status =  nxd_sntp_client_initialize_unicast(&client_ptr, 
                                        *unicast_server); 


/* If status is NX_SUCCESS the Client 
   is initialized for unicast operation.  */

nx_sntp_client_receiving_updates

指示客户端是否收到有效更新

原型

UINT nx_sntp_client_receiving_updates(
    NX_SNTP_CLIENT *client_ptr, 
    UINT *receive_status);

说明

此服务指示客户端是否正在接收有效的 SNTP 更新。 如果超过了没有有效更新的最大时间间隔,或者超出了连续无效更新的限制,接收状态将返回为 false。 请注意,SNTP 客户端仍在运行,并且如果应用程序想要使用另一个单播或广播/多播服务器重启 SNTP 客户端,则必须使用 nx_sntp_client_stop 服务停止 SNTP 客户端,同时通过在另一台服务器上使用初始化服务之一重新初始化客户端。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针。

  • receive_status:客户端正在接收有效更新时指向指示器的指针。

返回值

  • NX_SUCCESS (0x00) 客户端已成功接收更新状态

  • NX_PTR_ERROR (0x07) 指针输入无效

允许来自

初始化、线程

示例

/* Determine if the SNTP Client is receiving valid udpates.  */
UINT receive_status;

status =  nx_sntp_client_receiving_updates(client_ptr, 
                                     &receive_status);

/* If status is NX_SUCCESS and receive_status is NX_TRUE, 
   the client is currently receiving valid updates.  */

nx_sntp_client_request_unicast_time

直接将单播请求发送到 NTP 服务器

原型

UINT nx_sntp_client_request_unicast_time(
    NX_SNTP_CLIENT *client_ptr, 
    UINT wait_option);

说明

此服务允许应用程序直接将单播请求从 SNTP 客户端线程任务异步发送到 NTP 服务器。 等待选项指定等待响应的时间。 如果成功,应用程序可以使用其他 SNTP 客户端服务来获取最新时间。 有关更多详细信息,请参阅“SNTP 异步单播请求”部分。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针。

  • Wait_option:等待 NTP 在计时器时钟周期中响应的选项。

返回值

  • NX_SUCCESS (0x00) 客户端成功发送和接收单播更新

  • NX_SNTP_CLIENT_NOT_STARTED (0xD0B) 客户端线程未启动

  • NX_PTR_ERROR (0x07) 指针输入无效

  • NX_CALLER_ERROR (0x11) 无效的服务调用方

允许来自

线程数

示例

/* Determine if the SNTP Client is receiving valid udpates.  */
UINT receive_status;

status =  nx_sntp_client_request_unicast_time(client_ptr, 400);

/* If status is NX_SUCCESS and receive_status is NX_TRUE, 
   the client is received a valid response to the unicast request.  */

nx_sntp_client_run_broadcast

在广播模式下运行客户端

原型

UINT nx_sntp_client_run_broadcast(NX_SNTP_CLIENT *client_ptr);

说明

此服务在广播模式下启动客户端,客户端将在此模式下等待接收来自 SNTP 服务器的广播。 如果收到有效的广播 SNTP 消息,则会重置 SNTP 客户端超时(最大间隔,无更新)和收到的连续无效消息计数。 如果超过了其中任一限制,SNTP 客户端会将服务器状态设置为无效,尽管它仍然等待接收更新。 应用程序可以轮询 SNTP 客户端任务以获得服务器状态,如果无效,则停止 SNTP 客户端,并使用另一个 SNTP 广播地址重新将其初始化。 它也可以切换到单播 SNTP 服务器。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针。

返回值

  • status 实际完成状态

  • NX_SNTP_CLIENT_ALREADY_STARTED (0xD0C) 客户端已启动

  • NX_SNTP_CLIENT_NOT_INITIALIZED (0xD01) 客户端未初始化

  • NX_PTR_ERROR (0x07) 指针输入无效

  • NX_CALLER_ERROR (0x11) 无效的服务调用方

允许来自

线程数

示例

/* Start Client running in broadcast mode.  */
status =  nx_sntp_client_run_broadcast(client_ptr);

/* If status is NX_SUCCESS, the client is successfully started.  */

nx_sntp_client_run_unicast

在单播模式下运行客户端

原型

UINT nx_sntp_client_run_unicast(NX_SNTP_CLIENT *client_ptr);

说明

此服务在单播模式下启动客户端,客户端将在此模式下定期将单播请求发送到其 SNTP 服务器进行时间更新。 如果收到有效的 SNTP 消息,则会重置 SNTP 客户端超时(最大间隔,无更新)、初始轮询间隔和收到的连续无效消息计数。 如果超过了其中任一限制,SNTP 客户端会将服务器状态设置为无效,尽管它仍然轮询并等待接收更新。 应用程序可以轮询 SNTP 客户端任务以获得服务器状态,如果无效,则停止 SNTP 客户端,并使用另一个 SNTP 单播地址重新将其初始化。 它也可以切换到广播 SNTP 服务器。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针。

返回值

  • NX_SUCCESS (0x00) 在单播模式下成功启动客户端

  • NX_SNTP_CLIENT_ALREADY_STARTED (0xD0C) 客户端已启动

  • NX_SNTP_CLIENT_NOT_INITIALIZED (0xD01) 客户端未初始化

  • NX_PTR_ERROR (0x07) 指针输入无效

  • NX_CALLER_ERROR (0x11) 无效的服务调用方

允许来自

线程数

示例

/* Start the Client in unicast mode. */
status =  nx_sntp_client_run_unicast(client_ptr);

/* If status = NX_SUCCESS, the Client was successfully started.  */

nx_sntp_client_set_local_time

设置 SNTP 客户端本地时间

原型

UINT nx_sntp_client_set_local_time(
    NX_SNTP_CLIENT *client_ptr , 
    ULONG seconds, ULONG fraction);

说明

此服务将使用输入时间设置 SNTP 客户端本地时间,格式为 SNTP,例如秒和“小数”,即以十六进制格式表示秒的小数的格式。 它用于从独立的计时器(例如实时时钟)更新 SNTP 客户端本地时间。 SNTP 协议适用于 SNTP 时间更新,用来防止本地时钟时间“偏移”。 如果应用程序设备上没有独立的计时器,那么 SNTP 服务器时间更新可以作为,但不应成为 SNTP 客户端本地时间的唯一输入。

在启动 SNTP 客户端线程之前,也可以使用此 API 为 SNTP 客户端提供基准时间。 将 SNTP 客户端本地时间与收到的更新进行比较,以获取有效的时间数据。 对于第一次收到的更新,可能会有很大的差异。 因此,有一个选项可供 SNTP 客户端忽略第一次更新时出现的差异。 通过这种方式,SNTP 客户端可以在没有基准时间的情况下启动。 输入时间可从已知的纪元时间(通常在 Internet 上得知)获得,并计算为自 1900 年 1 月 1 日起的秒数(直到 2036 年新的“纪元”开始时)。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针

  • seconds:时间输入的秒部分

  • 小数:SNTP 小数格式的亚秒部分

返回值

  • NX_SUCCESS (0x00) 成功设置本地时间

  • NX_PTR_ERROR (0x07) 指针输入无效

允许来自

初始化

示例

/* Set the SNTP Client local time. */
base_seconds =  0xd2c50b71;
base_fraction = 0xa132db1e;

status =  nx_sntp_client_set_local_time(&demo_client, 
                                        base_seconds, 
                                        base_fraction);

/* If status is NX_SUCCESS an SNTP Client time 
   was successfully set.  */

nx_sntp_client_set_time_update_notify

设置 SNTP 更新回调

原型

UINT nx_sntp_client_set_time_update_notify(
    NX_SNTP_CLIENT *client_ptr, 
    VOID (time_update_cb)(
        NX_SNTP_TIME_MESSAGE *time_update_ptr,
        NX_SNTP_TIME *local_time)));

说明

此服务设置回调,以在 SNTP 客户端收到有效的时间更新时通知应用程序。 它将以 NTP 格式提供实际的 SNTP 消息和 SNTP 客户端的本地时间(通常相同)。 应用程序可以直接使用 NTP 数据,也可以调用 nx_sntp_client_utility_display_date_time 服务将时间转换为人工可读格式。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针

  • time_update_cb:回调函数的指针

返回值

  • NX_SUCCESS (0x00) 成功设置回调

  • NX_PTR_ERROR (0x07) 指针输入无效

允许来自

初始化

示例

/* Set the SNTP Client time update callback. */
VOID client_time_update_notify(NX_SNTP_TIME_MESSAGE *time_update_ptr, 
                                           NX_SNTP_TIME *local time);

NX_SNTP_CLIENT demo_client;


status = nx_sntp_client_set_time_update_notify(&demo_client, 
                                            time_update_cb);

/* If status is NX_SUCCESS an SNTP Client 
   time update callback was successfully set.  */

nx_sntp_client_stop

停止 SNTP 客户端线程

原型

UINT nx_sntp_client_stop(NX_SNTP_CLIENT *client_ptr);

说明

此服务可停止 SNTP 客户端线程。 在无限循环中运行的 SNTP 客户端线程任务会在每次迭代时暂停,以释放对 SNTP 客户端状态的控制,并允许应用程序在 SNTP 客户端上进行 API 调用。

输入参数

  • client_ptr:指向 SNTP 客户端控制块的指针

返回值

  • NX_SUCCESS (0x00) 成功停止客户端线程

  • NX_SNTP_CLIENT_NOT_STARTED (0xDB) SNTP 客户端线程未启动

  • NX_PTR_ERROR (0x07) 指针输入无效

允许来自

初始化、线程

示例

/* Stop the SNTP Client. */
status =  nx_sntp_client_stop(&demo_client);

/* If status is NX_SUCCESS an SNTP 
   Client instance was successfully stopped.  */

nx_sntp_client_utility_display_date_time

将 NTP 时间转换为日期和时间字符串

原型

UINT nx_sntp_client_utility_display_date_time (
    NX_SNTP_CLIENT *client_ptr,
    CHAR *buffer,
    UINT length);

说明

此服务将 SNTP 客户端的本地时间转换为年月日期格式,并在提供的缓冲区中返回日期。 NX_SNTP_CURRENT_YEAR 不需要与当前客户端时间的年份相同,但必须对它进行定义。

输入参数

  • client_ptr 指向 SNTP 客户端的指针*

  • buffer:指向缓冲区以存储日期的指针

  • length:输入缓冲区的大小

返回值

  • NX_SUCCESS (0x00) 转换成功

  • NX_SNTP_ERROR_CONVERTING_DATETIME (0xD08) 未定义 NX_SNTP_CURRENT_YEAR 或未确立本地客户端时间

  • NX_SNTP_INVALID_DATETIME_BUFFER (0xD07) 缓冲区长度不足

允许来自

初始化、线程

示例

/* Convert and display the Client’s local time. */

status =  nx_sntp_client_utility_display_date_time(client_ptr , 
                                        buffer, sizeof(buffer));

/* If status is NX_SUCCESS, 
   date was successfully written to buffer.  */

nx_sntp_client_utility_msecs_to_fraction

将毫秒转换为 NTP 小数部分

原型

UINT nx_sntp_client_utility_msecs_to_fraction (
    ULONG milliseconds,   
    ULONG *fraction);

说明

此服务可将输入毫秒转换为 NTP 小数部分。 它旨在与具有 SNTP 客户端的起始基准时间但不采用 NTP 秒/小数格式的应用程序一起使用。 若要生成有效的小数,毫秒数必须小于 1000。

输入参数

  • milliseconds:要转换的毫秒

  • fraction:指向转换为小数的毫秒的指针

返回值

  • NX_SUCCESS (0x00) 转换成功

  • NX_SNTP_OVERFLOW_ERROR (0xD32) 将时间转换为日期时出错

  • NX_SNTP_INVALID_TIME (0xD30) SNTP 数据输入无效

允许来自

初始化、线程

示例

/* Convert the milliseconds to a fraction. */


status =  nx_sntp_client_utility_msecs_to_fraction(milliseconds, 
                                                     &fraction);

/* If status is NX_SUCCESS, 
   data was successfully converted.  */

nx_sntp_client_utility_usecs_to_fraction

将微秒转换为 NTP 小数部分

原型

UINT nx_sntp_client_utility_usecs_to_fraction (
    ULONG microseconds,   
    ULONG *fraction);

说明

此服务可将输入微秒转换为 NTP 小数部分。 它旨在与具有 SNTP 客户端的起始基准时间但不采用 NTP 秒/小数格式的应用程序一起使用。 若要生成有效的小数,微秒数必须小于 1000000。

输入参数

  • microseconds:要转换的微秒

  • fraction:指向转换为小数的微秒的指针

返回值

  • NX_SUCCESS (0x00) 转换成功

  • NX_SNTP_OVERFLOW_ERROR (0xD32) 将时间转换为日期时出错

  • NX_SNTP_INVALID_TIME (0xD30) SNTP 数据输入无效

允许来自

初始化、线程

示例

/* Convert the microseconds to a fraction. */


status =  nx_sntp_client_utility_msecs_to_fraction(microseconds, 
                                                     &fraction);

/* If status is NX_SUCCESS, data was successfully converted.  */

nx_sntp_client_utility_fraction_to_usecs

将 NTP 小数部分转换为微秒

原型

UINT nx_sntp_client_utility_fraction_to_usecs(
    ULONG fraction,   
    ULONG *microseconds);

说明

此服务可将输入 NTP 小数部分转换为微秒。

输入参数

  • fraction:要转换的小数

  • microseconds:指向转换为微秒的小数的指针

返回值

  • NX_SUCCESS (0x00) 转换成功

  • NX_SNTP_INVALID_TIME (0xD30) SNTP 数据输入无效

允许来自

初始化、线程

示例

/* Convert the fraction to microseconds. */


status =  nx_sntp_client_utility_fraction_to_msecs(fraction, 
                                             &microseconds);

/* If status is NX_SUCCESS, data was successfully converted.  */