99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā)-OpenHarmony輕量系統(tǒng)之獲取當(dāng)?shù)貢r間

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-01-22 17:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在輕量設(shè)備里面,我們常常需要獲取本地時間,用于時間顯示,log記錄,幫助RTC芯片糾正時間等等。我們在之前設(shè)計了一個智慧時鐘,需要使用到本地當(dāng)前時間,因此本篇文章想在OpenHarmony上實(shí)現(xiàn)SNTP獲取本地時間,并將此功能集成為一個模塊,便于我們的主程序調(diào)用。

環(huán)境

OpenHarmony3.1 潤和hispark_pegasus Hi3861開發(fā)板 DevEco Device Tool 串口調(diào)試助手

SNTP介紹

SNTP(Simple Network Time Protocal簡單網(wǎng)絡(luò)時間協(xié)議),用于跨廣域網(wǎng)或局域網(wǎng)同步時間的協(xié)議,主要用來同步因特網(wǎng)中的計算機(jī)時鐘,具有較高的精確度(幾十毫秒)。

SNTP協(xié)議相對于NTP,優(yōu)化了網(wǎng)絡(luò)傳播延時的影響,同時也能保證時間達(dá)到一定的精確度。

SNTP協(xié)議采用客戶端/服務(wù)器的工作方式,可以采用單播(點(diǎn)對點(diǎn))或者廣播(一點(diǎn)對多點(diǎn))模式操作。SNTP服務(wù)器通過接收 GPS信號或自帶的原子鐘作為系統(tǒng)的時間基準(zhǔn)。單播模式下,SNTP客戶端能夠通過定期訪問 SNTP服務(wù)器獲得準(zhǔn)確的時間信息,用于調(diào)整客戶端自身所在系統(tǒng)的時間,達(dá)到同步時間的目的。

時間戳

SNTP發(fā)送回來的時間戳是NTP時間戳。 NTP時間戳和UTC時間戳的主要區(qū)別在于它們的起始時間: NTP時間戳的起始點(diǎn)是1900年1月1日00:00:00。 UTC時間戳(Unix時間戳)的起始點(diǎn)是1970年1月1日00:00:00。

軟件設(shè)計流程

流程圖

文件樹狀圖

.
├── include  //sntp庫
│   └── lwip
│       └── apps
│           ├── sntp.h
│           └── sntp_opts.h
├── src     //sntp源文件
│   ├── BUILD.gn
│   ├── sntp.c
│   ├── sntp_debug.c
│   ├── sntp_port.c
│   └── sntp_port.h
└── test    //模塊主代碼
    ├── BUILD.gn
    ├── sntp_test.c //模塊源代碼
    ├── sntp_test.h //模塊接口、wifi配置
    ├── wifi_connecter.c    //wifi連接庫
    └── wifi_connecter.h

使用方法

  1. 下載源碼
  2. 將SNTP文件夾放入applications/sample/wifi-iot/app路徑下
  3. 在applications/sample/wifi-iot/app/BUILD.gn的features內(nèi)添加以下代碼
"sntp/src:sntp",
"sntp/test:sntp_test",
  1. 在自己的主程序中引用sntp_test.h文件,調(diào)用set_sntp_init()函數(shù)初始化,隨后即可通過訪問sntp_time_sec變量獲取當(dāng)前時間(NTP時間戳0時區(qū))

流程介紹

連接WIFI

連接的WIFI需要可以訪問互聯(lián)網(wǎng),否則設(shè)備無法聯(lián)網(wǎng)獲取時間

WIFI當(dāng)前設(shè)置為:(配置在/sntp/test/sntp_test.h)

  • SSID:M20P
  • PSK:12345678

設(shè)置SNTP服務(wù)器

常用SNTP服務(wù)器有以下四個:

"cn.ntp.org.cn", // 中國 NTP 快速授時服務(wù)

"ntp.ntsc.ac.cn", // 國家授時中心 NTP 服務(wù)器

"time.pool.aliyun.com", // 阿里云公共 NTP 服務(wù)器

"cn.pool.ntp.org", // 國際 NTP 快速授時服務(wù)

在本文章中,SNTP_SERVER_DNS默認(rèn)為0,因此我們使用IP進(jìn)行配置SNTP服務(wù)器

#if SNTP_SERVER_DNS
static const char* g_ntpServerList[] = {
    // refers from https://dns.icoa.cn/ntp/#china
    "cn.ntp.org.cn", // 中國 NTP 快速授時服務(wù)
    "ntp.ntsc.ac.cn", // 國家授時中心 NTP 服務(wù)器
    "time.pool.aliyun.com", // 阿里云公共 NTP 服務(wù)器
    "cn.pool.ntp.org", // 國際 NTP 快速授時服務(wù)
};
#define SNTP_SERVERS ARRAY_SIZE(g_ntpServerList)

void SntpSetServernames(void)
{
    for (size_t i = 0; i < SNTP_SERVERS; i++) {
        sntp_setservername(i, g_ntpServerList[i]);
    }
}

#else

ip4_addr_t g_ntpServerList[SNTP_MAX_SERVERS];

void SntpSetServers(void)
{
    IP4_ADDR(&g_ntpServerList[0], 114, 67, 237, 130); // cn.ntp.org.cn
    IP4_ADDR(&g_ntpServerList[1], 114, 118, 7, 163);  // ntp.ntsc.ac.cn
    IP4_ADDR(&g_ntpServerList[2], 182, 92, 12, 11); // time.pool.aliyun.com
    IP4_ADDR(&g_ntpServerList[3], 193, 182, 111, 12); // cn.pool.ntp.org
#define SNTP_SERVERS 4
    for (size_t i = 0; i < SNTP_SERVERS; i++) {
        sntp_setserver(i, (ip_addr_t*)&g_ntpServerList[i]);
    }
}
#endif

void set_sntp_init(void)
{
/****************************/
#if SNTP_SERVER_DNS
    ip4_addr_t dnsServerAddr;
    IP4_ADDR(&dnsServerAddr, 192, 168, 1, 1);
    dns_setserver(0, (struct ip_addr *)&dnsServerAddr);
    dns_init();

    SntpSetServernames();
#else
    SntpSetServers();
#endif
/****************************/
}

SNTP初始化以及獲取時間

sntp_setoperatingmode(SNTP_OPMODE_POLL);
    sntp_init();

    printf("sntp_enabled: %drn", sntp_enabled());
    for (size_t i = 0; i < SNTP_SERVERS; i++) {
        printf("sntp_getreachability(%d): %drn", i, sntp_getreachability(i));
    }

    osDelay(500);
    for (size_t i = 0; i < SNTP_SERVERS; i++) {
        printf("sntp_getreachability(%d): %drn", i, sntp_getreachability(i));
    }

時間顯示

本樣例源碼僅作為一個底層模塊,因此尚未有主程序??梢宰孕袆?chuàng)建一個主程序進(jìn)行測試獲取時間,或者按照以下方式修改源碼: 在sntp/test/sntp_test.c的SntpSetServers函數(shù)末尾添加以下代碼(顯示獲取到的時間):

time_t ut;
ut = (unsigned int)((unsigned int)sntp_time_sec + ((unsigned int)2085978496L)); //轉(zhuǎn)換成UTC時間(0時區(qū))
struct tm *now_time = gmtime(&ut);
printf("%d %d %dn", now_time- >tm_hour, now_time- >tm_min, now_time- >tm_sec);

在sntp/test/sntp_test.c末尾添加以下代碼(開機(jī)自啟動):

SYS_RUN(set_sntp_init);

本文主要是對鴻蒙開發(fā)技術(shù)OpenHarmony中的輕量系統(tǒng)-獲取當(dāng)?shù)貢r間; 更多的鴻蒙實(shí)戰(zhàn)開發(fā)可以去主頁閱讀,或找我保存一下鴻蒙開發(fā)技術(shù)文檔

鴻蒙開發(fā)技術(shù)分布路線圖如下,高清完整版找我保存 。

最后結(jié)果

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 芯片
    +關(guān)注

    關(guān)注

    459

    文章

    52481

    瀏覽量

    440560
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    622

    瀏覽量

    68839
  • sntp
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    3812
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2617

    瀏覽量

    44033
  • OpenHarmony
    +關(guān)注

    關(guān)注

    29

    文章

    3851

    瀏覽量

    18578
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    開源鴻蒙開發(fā)必備!OpenHarmony替換Full SDK全攻略

    本文介紹開源鴻蒙OpenHarmony替換FullSDK的方法,演示設(shè)備為觸覺智能PurplePiOH鴻蒙開發(fā)獲取FullSD
    的頭像 發(fā)表于 06-06 18:11 ?247次閱讀
    開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>必備!<b class='flag-5'>OpenHarmony</b>替換Full SDK全攻略

    DialogHub上線OpenHarmony開源社區(qū),高效開發(fā)鴻蒙應(yīng)用彈窗

    作為鴻蒙應(yīng)用開發(fā)者,在使用ArkUI現(xiàn)有能力進(jìn)行彈窗開發(fā)時,總會遇到一些讓人糾結(jié)的交互問題:應(yīng)用內(nèi)進(jìn)行消息提示時,既要求消息內(nèi)容支持圖文混排,又要求彈窗本身不能打斷用戶交互(頁面滑動、頁面
    發(fā)表于 04-03 17:30

    鴻蒙北向開發(fā)OpenHarmony5.0 DevEco Studio開發(fā)工具安裝與配置

    本文介紹OpenHarmony5.0 DevEco Studio開發(fā)工具安裝與配置,鴻蒙北向開發(fā)入門必備!由觸覺智能Purple Pi OH鴻蒙
    的頭像 發(fā)表于 03-28 18:05 ?857次閱讀
    <b class='flag-5'>鴻蒙</b>北向<b class='flag-5'>開發(fā)</b><b class='flag-5'>OpenHarmony</b>5.0 DevEco Studio<b class='flag-5'>開發(fā)</b>工具安裝與配置

    【北京迅為】iTOP-RK3568開發(fā)鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動開發(fā)實(shí)操-HDF驅(qū)動配置UART

    【北京迅為】iTOP-RK3568開發(fā)鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動開發(fā)實(shí)操-HDF驅(qū)動配置UART
    的頭像 發(fā)表于 03-25 11:02 ?713次閱讀
    【北京迅為】iTOP-RK3568<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>系統(tǒng)</b>南向驅(qū)動<b class='flag-5'>開發(fā)</b>實(shí)操-HDF驅(qū)動配置UART

    鴻蒙北向開發(fā)OpenHarmony4.1 DevEco Studio開發(fā)工具安裝與配置

    OpenHarmony4.1 DevEco Studio開發(fā)工具安裝與配置,鴻蒙北向開發(fā)入門必備!
    的頭像 發(fā)表于 02-07 17:35 ?814次閱讀
    <b class='flag-5'>鴻蒙</b>北向<b class='flag-5'>開發(fā)</b><b class='flag-5'>OpenHarmony</b>4.1 DevEco Studio<b class='flag-5'>開發(fā)</b>工具安裝與配置

    OpenHarmony源碼編譯后燒錄鏡像教程,RK3566鴻蒙開發(fā)板演示

    本文介紹瑞芯微主板/開發(fā)板編譯OpenHarmony源碼后燒錄鏡像的教程,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示。搭載了瑞芯微RK3566四核處理器,樹莓派卡片電腦設(shè)計,支持開
    的頭像 發(fā)表于 12-30 10:08 ?833次閱讀
    <b class='flag-5'>OpenHarmony</b>源碼編譯后燒錄鏡像教程,RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板演示

    OpenHarmony怎么修改DPI密度值?觸覺智能RK3566鴻蒙開發(fā)板演示

    開源鴻蒙OpenHarmony系統(tǒng)下,修改DPI密度值的方法,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,搭載了瑞芯微RK3566四核處
    的頭像 發(fā)表于 12-24 11:46 ?726次閱讀
    <b class='flag-5'>OpenHarmony</b>怎么修改DPI密度值?觸覺智能RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板演示

    OpenHarmony默認(rèn)30秒熄屏太麻煩?觸覺智能鴻蒙開發(fā)板教你輕松取消

    OpenHarmony系統(tǒng)開機(jī)后 30 秒會自動息屏,教大家兩招輕松取消自動息屏,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,已適配全新Open
    的頭像 發(fā)表于 12-09 11:45 ?776次閱讀
    <b class='flag-5'>OpenHarmony</b>默認(rèn)30秒熄屏太麻煩?觸覺智能<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板教你輕松取消

    戈帥《OpenHarmony系統(tǒng)從入門到精通50例》開發(fā)板與傳感器配置說明

    戈帥《OpenHarmony系統(tǒng)從入門到精通50例》開發(fā)板與傳感器配置說明,請查看附件*附件:《Op
    發(fā)表于 12-03 15:46

    OpenHarmony屬性信息怎么修改?觸覺智能RK3566鴻蒙開發(fā)板來演示

    本文介紹開源鴻蒙OpenHarmony系統(tǒng)下,修改產(chǎn)品屬性信息的方法,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,已適配全新
    的頭像 發(fā)表于 11-27 09:31 ?743次閱讀
    <b class='flag-5'>OpenHarmony</b>屬性信息怎么修改?觸覺智能RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板來演示

    如何在開源鴻蒙OpenHarmony開啟SELinux模式?RK3566鴻蒙開發(fā)板演示

    本文介紹開源鴻蒙OpenHarmony系統(tǒng)下,開啟/關(guān)閉SELinux權(quán)限的方法,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,已適配全新
    的頭像 發(fā)表于 11-18 19:03 ?830次閱讀
    如何在開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b>開啟SELinux模式?RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板演示

    【開源鴻蒙】使用QEMU運(yùn)行OpenHarmony系統(tǒng)

    本文將會介紹如何從源碼安裝QEMU 6.2.0,以及如何使用QEMU運(yùn)行OpenHarmony系統(tǒng)。通過本文,你將會對QEMU和OpenHarm
    的頭像 發(fā)表于 09-14 08:51 ?1339次閱讀
    【開源<b class='flag-5'>鴻蒙</b>】使用QEMU運(yùn)行<b class='flag-5'>OpenHarmony</b><b class='flag-5'>輕</b><b class='flag-5'>量</b><b class='flag-5'>系統(tǒng)</b>

    瑞芯微RK3566鴻蒙開發(fā)OpenHarmony標(biāo)準(zhǔn)系統(tǒng)應(yīng)用兼容性測試指導(dǎo)

    本文OpenHarmony標(biāo)準(zhǔn)系統(tǒng)應(yīng)用兼容性測試指導(dǎo),適用鴻蒙系統(tǒng)軟件開發(fā)測試的新手入門學(xué)習(xí)課程,設(shè)備為觸覺智能的瑞芯微RK3566開發(fā)板,
    的頭像 發(fā)表于 09-10 11:56 ?1262次閱讀
    瑞芯微RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板<b class='flag-5'>OpenHarmony</b>標(biāo)準(zhǔn)<b class='flag-5'>系統(tǒng)</b>應(yīng)用兼容性測試指導(dǎo)

    鴻蒙OpenHarmony南向/北向快速開發(fā)教程-迅為RK3568開發(fā)

    4.1學(xué)習(xí)之旅了嗎?快來加入我們,一起探索鴻蒙4.1系統(tǒng)的無限魅力吧! 【北京迅為】OpenHarmony學(xué)習(xí)開發(fā)系列教程(第1期 北向基礎(chǔ)篇一) P0_先導(dǎo)課 P1_
    發(fā)表于 07-23 10:44

    開源鴻蒙 編譯OpenHarmony系統(tǒng)QEMU RISC-V版本

    本文將介紹如何為QEMU RISC-V虛擬平臺構(gòu)建OpenHarmony系統(tǒng)。得益于QEMU的CPU指令集模擬執(zhí)行能力,該方法可以在沒有開發(fā)
    的頭像 發(fā)表于 07-15 10:36 ?1787次閱讀
    開源<b class='flag-5'>鴻蒙</b> 編譯<b class='flag-5'>OpenHarmony</b><b class='flag-5'>輕</b><b class='flag-5'>量</b><b class='flag-5'>系統(tǒng)</b>QEMU RISC-V版本