全志科技
登录
直播中
贾虎世
7年用户
1662经验值
私信
关注
[问答]
XR806板子是怎样使用SNTP去获取一个时间的
开启该帖子的消息推送
编译
XR806b板子获取时间的方法有哪几种?
XR806板子是怎样
使用SNTP去获取一个时间的?
回帖
(1)
吴思锋
2021-12-28 10:52:52
本着水则水的心态,睡前搞了一个演示
如题,XR80 认为可以联网,那使用 SNTP 获取一个时间肯定不是问题。中看看都有什么库,果然不出我所料,有SNTP,那就好玩了......
过程可能有点曲折,比如SNTP获取不到时间。
再比如compile-错误
这显然的英文分区有问题论坛有解决方法
效果:
main.c
#include 《stdio.h》
#include “ohos_init.h”
#include “kernel/os/os.h”
#include “wifi_device.h”
#include “sntp.h”
static OS_Thread_t g_main_thread;
static OS_Thread_t g_time_thread;
#define WIFI_DEVICE_CONNECT_AP_SSID “*****************”
#define WIFI_DEVICE_CONNECT_AP_PSK “************” //更改成自己的wifi
static int wifi_device_connect() {
const char ssid_want_connect[] = WIFI_DEVICE_CONNECT_AP_SSID;
const char psk[] = WIFI_DEVICE_CONNECT_AP_PSK;
if(WIFI_SUCCESS != EnableWifi()) {
printf(“Error: EnableWifi fail.n”);
return;
}
printf(“EnableWifi Success.n”);
if (WIFI_STA_ACTIVE == IsWifiActive())
printf(“Wifi is active.n”);
OS_Sleep(1);
if (WIFI_SUCCESS != Scan()) {
printf(“Error: Scan fail.n”);
return;
}
printf(“Wifi Scan Success.n”);
OS_Sleep(1);
WifiScanInfo scan_results[30];
unsigned int scan_num = 30;
if (WIFI_SUCCESS != GetScanInfoList(scan_results, &scan_num)) {
printf(“Error: GetScanInfoList fail.n”);
return;
}
WifiDeviceConfig config = { 0 };
int netId = 0;
int i;
for (i = 0; i 《 scan_num; i++) {
if (0 == strcmp(scan_results[i].ssid, ssid_want_connect)) {
memcpy(config.ssid, scan_results[i].ssid,
WIFI_MAX_SSID_LEN);
memcpy(config.bssid, scan_results[i].bssid,
WIFI_MAC_LEN);
strcpy(config.preSharedKey, psk);
config.securityType = scan_results[i].securityType;
config.wapiPskType = WIFI_PSK_TYPE_ASCII;
config.freq = scan_results[i].frequency;
break;
}
}
if (i 》= scan_num) {
printf(“Error: No found ssid in scan_resultsn”);
return;
}
printf(“GetScanInfoList Success.n”);
if (WIFI_SUCCESS != AddDeviceConfig(&config, &netId)) {
printf(“Error: AddDeviceConfig Failn”);
return;
}
printf(“AddDeviceConfig Success.n”);
if (WIFI_SUCCESS != ConnectTo(netId)) {
printf(“Error: ConnectTo Failn”);
return;
}
printf(“ConnectTo Successn”);
}
static int my_sntp_init(){
if(sntp_set_server(0,“0.cn.pool.ntp.org”) == 0){
printf(“set OK rn”);
}
}
static void MainThread(void *arg)
{
sntp_time my_time,*time;
time = &my_time;
wifi_device_connect();
my_sntp_init();
while (1) {
//printf(“hello world!rn”);
sntp_get_time(0,&my_time);
// sntp_request(“run”);
//time = sntp_obtain_time();
printf(“Now Time is %d:%d:%drn”,my_time.hour-161,my_time.min-139,my_time.sec);
LOS_Msleep(1000);
}
}
static void TimeThread(void *arg)
{
while (1) {
sntp_request(“run”);
LOS_Msleep(1000);
}
}
void SNTPTestMain(void) //(2)
{
printf(“SNTP Test Startn”);
if (OS_ThreadCreate(&g_main_thread, “MainThread”, MainThread, NULL,
OS_THREAD_PRIO_APP, 4 * 1024) != OS_OK) {
printf(“[ERR] Create MainThread Failedn”);
}
if (OS_ThreadCreate(&g_time_thread, “MainThread”, TimeThread, NULL,
OS_THREAD_PRIO_APP, 4 * 1024) != OS_OK) {
printf(“[ERR] Create MainThread Failedn”);
}
}
SYS_RUN(SNTPTestMain);
//必须以app开头 否则不会调用
BUILD.gn
import(“//device/xradio/xr806/liteos_m/config.gni”)
static_library(“app_sntp_Test”) {
configs = []
sources = [
“src/main.c”,
]
cflags = board_cflags
include_dirs = board_include_dirs
include_dirs += [
“。”,
“//utils/native/lite/include”,
“//foundation/communication/wifi_lite/interfaces/wifiservice”,
“//device/xradio/xr806/xr_skylark/include/net/sntp”,
]
}
group(“ohosdemo”) {
deps = [
“sntp_demo:app_sntp_Test”,
# “hello_demo:app_hello”,
#“iot_peripheral:app_peripheral”,
#“wlan_demo:app_WlanTest”,
# “LED:app_led”,
]
}
获取时间的方法中间有两种,一种是主动调用获取,一种是增加一条线程主动更新,然后随时获取,个人更推荐增加 一条线程主动更新的方法。
本着水则水的心态,睡前搞了一个演示
如题,XR80 认为可以联网,那使用 SNTP 获取一个时间肯定不是问题。中看看都有什么库,果然不出我所料,有SNTP,那就好玩了......
过程可能有点曲折,比如SNTP获取不到时间。
再比如compile-错误
这显然的英文分区有问题论坛有解决方法
效果:
main.c
#include 《stdio.h》
#include “ohos_init.h”
#include “kernel/os/os.h”
#include “wifi_device.h”
#include “sntp.h”
static OS_Thread_t g_main_thread;
static OS_Thread_t g_time_thread;
#define WIFI_DEVICE_CONNECT_AP_SSID “*****************”
#define WIFI_DEVICE_CONNECT_AP_PSK “************” //更改成自己的wifi
static int wifi_device_connect() {
const char ssid_want_connect[] = WIFI_DEVICE_CONNECT_AP_SSID;
const char psk[] = WIFI_DEVICE_CONNECT_AP_PSK;
if(WIFI_SUCCESS != EnableWifi()) {
printf(“Error: EnableWifi fail.n”);
return;
}
printf(“EnableWifi Success.n”);
if (WIFI_STA_ACTIVE == IsWifiActive())
printf(“Wifi is active.n”);
OS_Sleep(1);
if (WIFI_SUCCESS != Scan()) {
printf(“Error: Scan fail.n”);
return;
}
printf(“Wifi Scan Success.n”);
OS_Sleep(1);
WifiScanInfo scan_results[30];
unsigned int scan_num = 30;
if (WIFI_SUCCESS != GetScanInfoList(scan_results, &scan_num)) {
printf(“Error: GetScanInfoList fail.n”);
return;
}
WifiDeviceConfig config = { 0 };
int netId = 0;
int i;
for (i = 0; i 《 scan_num; i++) {
if (0 == strcmp(scan_results[i].ssid, ssid_want_connect)) {
memcpy(config.ssid, scan_results[i].ssid,
WIFI_MAX_SSID_LEN);
memcpy(config.bssid, scan_results[i].bssid,
WIFI_MAC_LEN);
strcpy(config.preSharedKey, psk);
config.securityType = scan_results[i].securityType;
config.wapiPskType = WIFI_PSK_TYPE_ASCII;
config.freq = scan_results[i].frequency;
break;
}
}
if (i 》= scan_num) {
printf(“Error: No found ssid in scan_resultsn”);
return;
}
printf(“GetScanInfoList Success.n”);
if (WIFI_SUCCESS != AddDeviceConfig(&config, &netId)) {
printf(“Error: AddDeviceConfig Failn”);
return;
}
printf(“AddDeviceConfig Success.n”);
if (WIFI_SUCCESS != ConnectTo(netId)) {
printf(“Error: ConnectTo Failn”);
return;
}
printf(“ConnectTo Successn”);
}
static int my_sntp_init(){
if(sntp_set_server(0,“0.cn.pool.ntp.org”) == 0){
printf(“set OK rn”);
}
}
static void MainThread(void *arg)
{
sntp_time my_time,*time;
time = &my_time;
wifi_device_connect();
my_sntp_init();
while (1) {
//printf(“hello world!rn”);
sntp_get_time(0,&my_time);
// sntp_request(“run”);
//time = sntp_obtain_time();
printf(“Now Time is %d:%d:%drn”,my_time.hour-161,my_time.min-139,my_time.sec);
LOS_Msleep(1000);
}
}
static void TimeThread(void *arg)
{
while (1) {
sntp_request(“run”);
LOS_Msleep(1000);
}
}
void SNTPTestMain(void) //(2)
{
printf(“SNTP Test Startn”);
if (OS_ThreadCreate(&g_main_thread, “MainThread”, MainThread, NULL,
OS_THREAD_PRIO_APP, 4 * 1024) != OS_OK) {
printf(“[ERR] Create MainThread Failedn”);
}
if (OS_ThreadCreate(&g_time_thread, “MainThread”, TimeThread, NULL,
OS_THREAD_PRIO_APP, 4 * 1024) != OS_OK) {
printf(“[ERR] Create MainThread Failedn”);
}
}
SYS_RUN(SNTPTestMain);
//必须以app开头 否则不会调用
BUILD.gn
import(“//device/xradio/xr806/liteos_m/config.gni”)
static_library(“app_sntp_Test”) {
configs = []
sources = [
“src/main.c”,
]
cflags = board_cflags
include_dirs = board_include_dirs
include_dirs += [
“。”,
“//utils/native/lite/include”,
“//foundation/communication/wifi_lite/interfaces/wifiservice”,
“//device/xradio/xr806/xr_skylark/include/net/sntp”,
]
}
group(“ohosdemo”) {
deps = [
“sntp_demo:app_sntp_Test”,
# “hello_demo:app_hello”,
#“iot_peripheral:app_peripheral”,
#“wlan_demo:app_WlanTest”,
# “LED:app_led”,
]
}
获取时间的方法中间有两种,一种是主动调用获取,一种是增加一条线程主动更新,然后随时获取,个人更推荐增加 一条线程主动更新的方法。
举报
更多回帖
rotate(-90deg);
回复
相关问答
编译
XR806
芯片的mac地址要如何存放以及如何
获取
2021-12-28
1066
有哪位大神可以分享
一
下
XR806
开发板/模组的资料呢
2021-12-28
1186
XR806
板子
编译时会出现哪些问题呢
2021-12-28
985
如何利用
XR806
开发板
去
实现
一
种UDP通信呢
2021-12-28
816
新手求助
怎样
去
使用
XR806
开发板呢
2021-12-28
1127
在
xr806
板子
上如何实现用ncnn跑神经网络mnis呢
2021-12-28
1157
请问大佬
XR806
鸿蒙开发板怎么样?
2021-12-29
1351
手机APP与
xr806
板是
怎样
进行数据通信的
2021-12-28
1153
如何保证休眠时
XR806
芯片GPIO的电平状态呢
2021-12-29
1147
跑
一
跑
XR806
的自带demo
2021-12-28
698
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分