物联网平台提供NTP服务,为资源受限的嵌入式设备,解决无法实时地获取时间的问题。您可以通过配置C Link SDK,设备端获取UTC时间。
前提条件
背景信息
阿里云物联网平台提供NTP(Network Time Protocol,网络时间协议)服务,更多信息,请参见NTP服务。
使用流程
如下功能时序图,以设备的应用程序demos/ntp_basic_demo.c
为例,介绍NTP服务的使用流程。
步骤一:设备初始化
创建设备句柄,完成设备建连。
static void* demo_device_init(char *product_key, char *device_name, char *device_secret, char *host, uint16_t port) { int32_t res = STATE_SUCCESS; /* 创建设备 */ void *device = aiot_device_create(product_key, device_name); .... .... res = aiot_device_connect(device); .... .... return device; }
NTP模块配置。
设置时间同步回调函数。
/* 设置时间同步回调函数 */ aiot_device_ntp_set_callback(device, demo_ntp_callback, NULL);
参数说明
参数
说明
device
设备句柄。
demo_ntp_callback
回调函数,可自定义。
NULL
回调函数的上下文参数,示例为
NULL
。设置时区。
/* 这里用中国所在的东8区演示功能, 因此例程运行时打印的是北京时间 */ aiot_device_ntp_set_zone(device, 8);
参数说明
参数
说明
device
设备句柄。
8
时区 。取值示例:
东8区,取值为8。
西3区,取值为-3。
步骤二:发起时间同步请求
发送时间同步请求。
/* 发送时间同步请求 */ aiot_device_ntp_request(device);
请求时间同步回调函数。
/* 时间同步回调函数 */ static void demo_ntp_callback(void *device, const aiot_ntp_time_t *recv_time, void *userdata) { printf("ntp recv time %d-%d-%d %d:%d:%d %d\r\n", recv_time->year, recv_time->mon, recv_time->day, recv_time->hour, recv_time->min, recv_time->sec, recv_time->msec); }
参数说明
参数
说明
device
设备句柄。
recv_time
返回的时间,您可直接使用。
userdata
回调的上下文,示例中为
NULL
。
步骤三:设备反初始化
/* 断开设备连接,并回收设备资源 */
demo_device_deinit(device);
文档内容是否对您有帮助?