色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

OpenHarmony系統中 POSIX 定時器的使用方法

電子發燒友開源社區 ? 來源:未知 ? 2022-12-14 09:15 ? 次閱讀

本文將為您介紹關于POSIX定時器的相關知識點。因為要使用絕對時間,存在系統時間被調節的可能性,指定時間段內下發通知等需求,排除了jiffies相關的定時器、依賴于系統運行時間的定時器、alarm這些簡單定時器或延時類定時器,最終用了POSIX提供的這組定時API。POSIX定時器是比較簡單的,關鍵在于學習API的使用。

它依賴于墻上時間,能夠適應本地時間更新、支持納秒級精度,還能通過sigevent事件靈活控制通知進程,當然也有實現難度和通用性的考慮,其完美的包含了上述的所有需求點。

1.定時器依賴

Linux中,調用該組API需添加librt函數庫,但我們畢竟使用的是OpenHarmony,優越性總是有的。librt這種基礎的函數庫,連BUILD.gn都不需要配置,直接引用頭文件time.h與signal.h調用就可以,其在prebuilts時,就已經處理完成。

2.定時器創建

#include
#include
union sigval {
int sival_int;
void *sival_ptr;
};
struct sigevent {
int sigev_notify;
int sigev_signo;
union sigev_value;
void (*sigev_notify_function)(union sigval);
pthread_attr_t *sigev_notify_attributes;
};
int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid);

(左右移動查看全部內容)

函數timer_create()創建一個定時器,僅創建,并未啟動定時任務。

參數

clockid用于標明一組時鐘,現存時鐘如下:

  • CLOCK_REALTIME:系統級時鐘,用于度量真實時間

  • CLOCK_MONOTONIC:系統啟動后不會發生改變,時鐘對時間的測量始于系統啟動。

CLOCK_PROCESS_CPUTIME_ID、CLOCK_THREAD_CPUTIME_ID以及Linux2.6.28新增CLOCK_MONOTONIC_RAW以及Linux2.6.35新增CLOCK_REALTIME_COARSE和CLOCK_MONTIC_COARSE時鐘也都可應用于clockid。

evp指定定時器超時產生事件類型,sigevent用于發出異步通知。

  • sigev_notify:指定異步事件發生時使用的通知機制

  • SIGEV_NONE :無事發生

  • SIGEV_SIGNAL:產生指定信號,信號量處理通知函數。sigev_value將會通過siginfo_t參數傳遞到處理函數

  • SIGEV_THREAD :創建線程sigev_notify_function。sigev_value將作為參數傳入函數。sigev_notify_attributes指定線程的屬性,如果其值為NULL,則屬性同PTHREAD_CREATE_DETACHED,線程創建后就分離。

timerid返回計時器id,唯一標識當前計時器。

返回值:

函數調用成功,返回0,并設置timerid為新創建的定時器id。如果發生錯誤,則返回-1,并設置errno。

3.定時器操作

#include
#include
union sigval {
int sival_int;
void *sival_ptr;
};
struct sigevent {
int sigev_notify;
int sigev_signo;
union sigev_value;
void (*sigev_notify_function)(union sigval);
pthread_attr_t *sigev_notify_attributes;
};
int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid);

(左右移動查看全部內容)

以上三個函數用于控制和查看timerid指定的定時器

  • 函數timer_getoverrun()返回定時器的溢出計數。

  • 函數timer_getoverrun()得到下一次超時的剩余時間和每一次的超時間隔,itimerspec結構用于保存相關信息。

  • 函數timer_settime()啟動定時器,并按照itimerspec結構指定的時間運行定時器。it_value指定第一次超時時間,it_interval以從第一次超時時間起進行間隔超時調用。

Tips:

  • it_value為0,定時器關閉并停止

  • 如果it_interval為0,則定時器只運行一次

  • it_value設置的時間屬于過去時間時,會當即觸發通知事件。

【天坑】:當參數flags設置為TIMER_ABSTIME,且clockid選擇CLOCK_REALTIME,則it_value的第一次超時時間被看做絕對時間。(絕對時間開始于格林威治時間1970年1月1日(0000 GMT))。該信息結合Tips第三條來看,當設置的時間小于GMT到當前的秒數時,你總會發現,自己設置的定時器立即被啟動了。這個it_value值比較大,且隨時間流逝而變化,這時與屏幕面面相覷的自己,一定是崩潰的。

4.定時器刪除

#include
int timer_delete(timer_t timerid);

(左右移動查看全部內容)

函數timer_delete()用于刪除指定的計時器。

Tips:

同進程時sigev_notify_function函數不僅可以刪除自己的定時器,也可以刪除友軍定時器。

總結:

本文章主要介紹了OpenHarmony系統中,基于某些特殊應用場景,要求精準度更高的定時器時,引入POSIX組件、POSIX組件提供創建、操作以及刪除一個定時器的API,通過對這三種API的使用解析,讓用戶方便在OpenHarmony系統中開發使用POSIX定時器,滿足不同場景下對定時器的需求。

更多熱點文章閱讀
  • DevEco Studio 3.1差異化構建打包,提升多版本應用開發效率
  • 首個OpenHarmony 5G手機適配進展
  • 鴻湖萬聯啟鴻開發板體驗:動畫效果的制作
  • 快速學會RK系列 Wi-Fi 業務代碼編譯配置
  • 中軟國際工業中控屏通過OpenHarmony兼容性測評

提示:本文由電子發燒友社區發布,轉載請注明以上來源。如需社區合作及入群交流,請添加微信EEFans0806,或者發郵箱liuyong@huaqiu.com。


原文標題:OpenHarmony系統中 POSIX 定時器的使用方法

文章出處:【微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。


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

    關注

    33

    文章

    552

    瀏覽量

    32987
  • 開源社區
    +關注

    關注

    0

    文章

    94

    瀏覽量

    434

原文標題:OpenHarmony系統中 POSIX 定時器的使用方法

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    高級定時器PWM輸入模式的配置方法

    我們將向大家介紹高級定時器的另一個常見應用——PWM輸入模式。在本節課,我們將先圍繞輸入捕獲模式展開,并重點描述PWM輸入模式和涉及的寄存,最后通過一個實驗例程去介紹PWM輸入模式的配置
    的頭像 發表于 11-08 16:48 ?2299次閱讀
    高級<b class='flag-5'>定時器</b>PWM輸入模式的配置<b class='flag-5'>方法</b>

    定時器的工作方式介紹

    定時器是計算機和嵌入式系統中常見的一種硬件模塊,用于實現定時和計數功能。定時器的工作方式通常由一組寄存來控制,這些寄存
    的頭像 發表于 07-12 10:29 ?975次閱讀

    定時器相關的寄存有哪些類型

    在微控制編程,定時器是一種非常常見的功能模塊,用于實現各種定時和計數功能。定時器的工作原理是通過內部的計數
    的頭像 發表于 07-12 10:25 ?956次閱讀

    鴻蒙開發系統基礎能力:Timer定時器

    設置一個定時器,該定時器定時器到期后執行一個函數。
    的頭像 發表于 06-28 11:33 ?1004次閱讀
    鴻蒙開發<b class='flag-5'>系統</b>基礎能力:Timer<b class='flag-5'>定時器</b>

    三菱plc定時器范圍怎么設置

    。定時器的設置范圍直接影響到程序的執行效率和控制精度。本文將詳細介紹三菱PLC定時器的設置范圍及其設置方法。 定時器的基本概念 定時器是一種
    的頭像 發表于 06-20 11:04 ?2712次閱讀

    三菱plc編程定時器編程咋輸入

    三菱PLC定時器的編程方法和應用場景。 1. 定時器的基本概念 定時器是一種用于測量時間間隔的設備,它可以在PLC程序實現延時、計時等功能
    的頭像 發表于 06-20 11:01 ?1660次閱讀

    PLC定時器的工作原理和應用

    在工業自動化控制系統,PLC(Programmable Logic Controller,可編程邏輯控制)因其強大的控制功能和靈活性而得到廣泛應用。作為PLC的重要組成部分,定時器
    的頭像 發表于 06-18 11:55 ?2538次閱讀

    如何實現一個軟件定時器

    在Linux,uC/OS,FreeRTOS等操作系統,都帶有軟件定時器,原理大同小異。典型的實現方法是:通過一個硬件定時器產生固定的時鐘節
    的頭像 發表于 04-29 11:00 ?667次閱讀

    ?PLC定時器介紹

    定時器是PLC重要的編程元件,是累計時間增量的內部器件。大部分自動控制領域都需要定時器進行延時控制,靈活地使用定時器可以編制出復雜的控制程序。
    發表于 03-22 12:36 ?2405次閱讀
    ?PLC<b class='flag-5'>定時器</b>介紹

    使用555定時器的可調雙定時器電路

    定時器 IC 555 是最通用和最常用的 IC 之一,因為它的應用范圍更廣,如 PWM放大器、延遲定時器、開關電路、占空比選擇、時鐘脈沖發生等。這也可用于各種應用,如精確
    的頭像 發表于 02-25 15:16 ?2254次閱讀
    使用555<b class='flag-5'>定時器</b>的可調雙<b class='flag-5'>定時器</b>電路

    定時器原理能控制馬達嗎為什么

    定時控制。 定時器的工作原理是基于內部的振蕩電路,通過穩定的時鐘信號來觸發或計時特定的事件。常見的定時器電路有555定時器和微控制
    的頭像 發表于 01-23 15:21 ?675次閱讀

    555定時器的基本功能 555定時器的工作原理及其應用

    定時器有三種基本工作模式,分別是單穩態、自由運放和雙穩態。它可以在多種電子電路實現功能的實現。下面將詳細介紹它們的功能特點。 單穩態模式:在單穩態模式下,555定時器可以實現一個穩態觸發
    的頭像 發表于 01-18 11:12 ?1.5w次閱讀

    AWTK 開源串口屏開發(6) - 定時器的用法

    ,可以給每個控件(包括窗口)創建一個定時器定時器到點后觸發v-on:timer事件。在AWTK串口屏,提供了6個定時器相關函數:sta
    的頭像 發表于 01-13 08:24 ?580次閱讀
    AWTK 開源串口屏開發(6) - <b class='flag-5'>定時器</b>的用法

    AT32 定時器配置pr和div的作用

    是AT32定時器的預分頻參數,用于設置定時器的分頻比,而div是AT32定時器的分頻因子參
    的頭像 發表于 01-08 10:12 ?1324次閱讀

    單片機定時器的用法

    本章以CW32通用定時器為例介紹單片機定時器的用法。
    的頭像 發表于 01-04 10:37 ?1426次閱讀
    單片機<b class='flag-5'>定時器</b>的用法
    主站蜘蛛池模板: 成人性生交大片| 正在播放国产精品| 亚洲AV午夜福利精品香蕉麻豆| 91精品在线国产| 久久免费看视频| 一品探花论坛| 久久r视频| 又紧又大又爽精品一区二区 | 亚洲欧美视频在线| 国产午夜一级淫片| 性生片30分钟| 好吊日视频在线| 永久免费的无码中文字幕| 老湿影院色情a| 97超级碰碰人妻中文字幕| 暖暖 免费 高清 日本视频大全| 99re久久免费热在线视频手机| 内射少妇36P九色| 成人国产在线视频| 翁公与小莹在客厅激情| 国产亚洲美女精品久久久2020| 亚洲国产欧美在线看片| 久久精品熟女亚洲AV国产| 99re这里只有精品视频| 欧洲兽交另类AVXXX| 公主纯肉高H文| 迅雷成人下载| 久久无码人妻中文国产| 99热这里只有精品88| 青青青青草原国产免费| 国产精品亚洲精品久久品| 幺妹视频福利视频| 免费网站在线观看国产v片| 处女座历史名人| 亚洲日韩精品AV中文字幕| 免费的好黄的漫画| 国产成人综合95精品视频免费 | 国产精品久久久久久久伊一| 亚州日韩精品AV片无码中文| 久久久综合中文字幕久久| xxx在线播放|