国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙開發-OpenHarmony輕量系統之獲取當地時間

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

掃碼添加小助手

加入工程師交流群

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

環境

OpenHarmony3.1 潤和hispark_pegasus Hi3861開發板 DevEco Device Tool 串口調試助手

SNTP介紹

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

SNTP協議相對于NTP,優化了網絡傳播延時的影響,同時也能保證時間達到一定的精確度。

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

時間戳

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

軟件設計流程

流程圖

文件樹狀圖

.
├── 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內添加以下代碼
"sntp/src:sntp",
"sntp/test:sntp_test",
  1. 在自己的主程序中引用sntp_test.h文件,調用set_sntp_init()函數初始化,隨后即可通過訪問sntp_time_sec變量獲取當前時間(NTP時間戳0時區)

流程介紹

連接WIFI

連接的WIFI需要可以訪問互聯網,否則設備無法聯網獲取時間

WIFI當前設置為:(配置在/sntp/test/sntp_test.h)

  • SSID:M20P
  • PSK:12345678

設置SNTP服務器

常用SNTP服務器有以下四個:

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

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

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

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

在本文章中,SNTP_SERVER_DNS默認為0,因此我們使用IP進行配置SNTP服務器

#if SNTP_SERVER_DNS
static const char* g_ntpServerList[] = {
    // refers from https://dns.icoa.cn/ntp/#china
    "cn.ntp.org.cn", // 中國 NTP 快速授時服務
    "ntp.ntsc.ac.cn", // 國家授時中心 NTP 服務器
    "time.pool.aliyun.com", // 阿里云公共 NTP 服務器
    "cn.pool.ntp.org", // 國際 NTP 快速授時服務
};
#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));
    }

時間顯示

本樣例源碼僅作為一個底層模塊,因此尚未有主程序。可以自行創建一個主程序進行測試獲取時間,或者按照以下方式修改源碼: 在sntp/test/sntp_test.c的SntpSetServers函數末尾添加以下代碼(顯示獲取到的時間):

time_t ut;
ut = (unsigned int)((unsigned int)sntp_time_sec + ((unsigned int)2085978496L)); //轉換成UTC時間(0時區)
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末尾添加以下代碼(開機自啟動):

SYS_RUN(set_sntp_init);

本文主要是對鴻蒙開發技術OpenHarmony中的輕量系統-獲取當地時間; 更多的鴻蒙實戰開發可以去主頁閱讀,或找我保存一下鴻蒙開發技術文檔

鴻蒙開發技術分布路線圖如下,高清完整版找我保存

最后結果

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    463

    文章

    54010

    瀏覽量

    466151
  • RTC
    RTC
    +關注

    關注

    2

    文章

    653

    瀏覽量

    71830
  • sntp
    +關注

    關注

    0

    文章

    6

    瀏覽量

    3920
  • 鴻蒙
    +關注

    關注

    60

    文章

    2963

    瀏覽量

    45907
  • OpenHarmony
    +關注

    關注

    33

    文章

    3952

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    想體驗鴻蒙生態,該怎么獲取鴻蒙開發板?有哪些途徑?

    如何快速上手體驗鴻蒙生態? 想體驗鴻蒙生態,該怎么獲取鴻蒙開發板?有哪些途徑?
    發表于 11-29 08:40

    觸覺智能Purple Pi OH開發板率先適配OpenHarmony6.0 Release,鴻蒙明星開發

    2025年9月19日,在官網上線開源鴻蒙OpenHarmony6.0Release僅13天,觸覺智能宣布旗下PurplePiOH開發板成功完成OpenHarmony6.0Release
    的頭像 發表于 10-29 08:00 ?826次閱讀
    觸覺智能Purple Pi OH<b class='flag-5'>開發</b>板率先適配<b class='flag-5'>OpenHarmony</b>6.0 Release,<b class='flag-5'>鴻蒙</b>明星<b class='flag-5'>開發</b>板

    【置頂公告】視美泰開源鴻蒙系列產品業務咨詢與商務合作通道正式開啟!

    設計。 生態解決方案整合智慧政務、智慧醫療、智慧園區、智慧教育、智慧安平、工業物聯網等領域鴻蒙系統集成與場景落地。 技術授權與聯合創新OpenHarmony生態兼容性認證、技術培訓及聯合品牌產品
    發表于 10-20 16:23

    開源鴻蒙技術大會2025丨智能生態分論壇:共繪智能生態新藍圖

    2025年9月27日,開源鴻蒙技術大會智能生態分論壇在長沙國際會議中心成功舉辦。本次分論壇匯聚了來自操作系統、芯片平臺、創新顯示、應用開發等領域的數十位頂尖專家和資深實踐者,圍繞“開
    的頭像 發表于 10-12 21:05 ?793次閱讀
    開源<b class='flag-5'>鴻蒙</b>技術大會2025丨<b class='flag-5'>輕</b>智能生態分論壇:共繪<b class='flag-5'>輕</b>智能生態新藍圖

    觸覺智能RK3576開發OpenHarmony開源鴻蒙系統USB控制傳輸功能示例

    本文介紹OpenHarmony開源鴻蒙系統的USB控制傳輸功能實現及相關代碼示例,基于觸覺智能RK3576開發板PurplePiOH2演示。Open
    的頭像 發表于 09-30 16:31 ?1575次閱讀
    觸覺智能RK3576<b class='flag-5'>開發</b>板<b class='flag-5'>OpenHarmony</b>開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>系統</b>USB控制傳輸功能示例

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

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

    觸覺智能鴻蒙開發板率先通過OpenHarmony5.0認證(生態產品兼容性證書)

    分布式能力、系統穩定性及多設備協同等方面得到了數千名開發者的認可,為鴻蒙開發者提供了更可靠的開源創新基礎。對OpenHarmony5.0感興
    的頭像 發表于 06-06 17:54 ?1272次閱讀
    觸覺智能<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>板率先通過<b class='flag-5'>OpenHarmony</b>5.0認證(生態產品兼容性證書)

    全志科技亮相OpenHarmony開發者大會2025

    近日,OpenHarmony開發者大會 2025(OHDC.2025,以下簡稱“大會”)在深圳舉辦。大會正式發布了開源鴻蒙5.1 Release版本,舉行了“開源鴻蒙應用技術組件共建啟
    的頭像 發表于 06-04 09:16 ?2205次閱讀
    全志科技亮相<b class='flag-5'>OpenHarmony</b><b class='flag-5'>開發</b>者大會2025

    開鴻Bot系列:為開源鴻蒙開發者而生!

    操作系統,實現從國產高性能芯片到操作系統的全棧自主化,構建起一站式的開源鴻蒙學習與開發平臺。融合開發與辦公場景打造開源
    的頭像 發表于 05-16 16:06 ?1191次閱讀
    開鴻Bot系列:為開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>者而生!

    開源鴻蒙開發新體驗,開鴻Bot系列今日開啟預售!

    操作系統,實現從國產高性能芯片到操作系統的全棧自主化,構建起一站式的開源鴻蒙學習與開發平臺。 融合開發與辦公場景,打造開源
    發表于 05-16 14:13

    DialogHub上線OpenHarmony開源社區,高效開發鴻蒙應用彈窗

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

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

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

    【北京迅為】iTOP-RK3568開發鴻蒙OpenHarmony系統南向驅動開發實操-HDF驅動配置UART

    【北京迅為】iTOP-RK3568開發鴻蒙OpenHarmony系統南向驅動開發實操-HDF驅動配置UART
    的頭像 發表于 03-25 11:02 ?1732次閱讀
    【北京迅為】iTOP-RK3568<b class='flag-5'>開發</b>板<b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>系統</b>南向驅動<b class='flag-5'>開發</b>實操-HDF驅動配置UART

    【貝啟科技BQ3568HM開源鴻蒙開發板深度試用報告】系統鏡像編譯和燒錄

    從貝啟開源社區: BQ3568HM開源鴻蒙系統主板資料匯總帖-開源鴻蒙技術交流-Bearkey-開源社區 ,可以獲取 貝啟科技BQ3568HM開源
    發表于 03-16 10:53

    OpenHarmony4.1系統WiFi藍牙打不開時,教你如何排查解決問題

    本文介紹OpenHarmony4.1系統開發板,出現打不開WiFi和藍牙的問題排查和解決方法。觸覺智能PurplePiOH鴻蒙開發板演示,搭載了瑞芯微RK3566四核處理器,1TOPS
    的頭像 發表于 03-12 18:55 ?1030次閱讀
    <b class='flag-5'>OpenHarmony</b>4.1<b class='flag-5'>系統</b>WiFi藍牙打不開時,教你如何排查解決問題