當前位置:首頁 » 城管服務 » c定時服務

c定時服務

發布時間: 2020-12-06 17:30:46

1. c 定時器

void main()
{
while (1)
{
TaskMain()
sleep(n);
Task1();
}

}

2. 如何用C語言實現精確軟體定時

在精度要求較高的情況下,如要求誤差不大於1ms時,可以利用GetTickCount()函數。該函數的返回值是DWORD型,表示以ms為單位的計算機啟動後經歷的時間間隔。下列的代碼可以實現50ms的精確定時,其誤差小於1ms。

// 起始值和中止值
DWORD dwStart, dwStop ;
dwStop = GetTickCount();

while(TRUE) {
// 上一次的中止值變成新的起始值
dwStart = dwStop ;
// 此處添加相應控制語句
do
{
dwStop = GetTickCount() ;
}while(dwStop - 50 < dwStart) ;
}

微軟公司在其多媒體Windows中提供了精確定時器的底層API支持。利用多媒體定時器可以很精確地讀出系統的當前時間,並且能在非常精確的時間間隔內完成一個事件、函數或過程的調用。利用多媒體定時器的基本功能,可以通過兩種方法實現精確定時。

1.使用timeGetTime()函數

該函數定時精度為ms級,返回從Windows啟動開始所經過的時間。由於使用該函數是通過查詢的方式進行定時控制的,所以,應該建立定時循環來進行定時事件的控制。

2. 使用timeSetEvent()函數

利用該函數可以實現周期性的函數調用。函數的參數說明如下:

uDelay:延遲時間;

uResolution:時間精度,在Windows中預設值為1ms;

lpFunction:回調函數,為用戶自定義函數,定時調用;

dwUser:用戶參數;

uFlags:標志參數;

TIME_ONESHOT:執行一次;

TIME_PERIODIC:周期性執行。

具體應用時,可以通過調用timeSetEvent()函數,將需要周期性執行的任務定義在lpFunction回調函數中(如:定時采樣、控制等),從而完成所需處理的事件。需要注意的是:任務處理的時間不能大於周期間隔時間。另外,在定時器使用完畢後,應及時調用timeKillEvent()將之釋放

對於精確度要求更高的定時操作,則應該使用QueryPerformanceFrequency()和QueryPerformanceCounter()函數。這兩個函數是系統提供的精確時間函數,並要求計算機從硬體上支持精確定時器。QueryPerformanceFrequency()函數和QueryPerformanceCounter()函數的原型如下:

BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

BOOL QueryPerformanceCounter(LARGE_INTEGER *lpCount);

數據類型LARGE_INTEGER既可以是一個8位元組長的整型數,也可以是兩個4位元組長的整型數的聯合結構,其具體用法根據編譯器是否支持64位而定。

在進行定時之前,先調用QueryPerformanceFrequency()函數獲得機器內部定時器的時鍾頻率,然後在需要嚴格定時的事件發生之前和發生之後分別調用QueryPerformanceCounter()函數,利用兩次獲得的計數之差及時鍾頻率,計算出事件經歷的精確時間。

3. c語言如何實現定時調用函數

#include<stdio.h>


voiddelay(unsignedlongn){//延時時間與n有關系,業余你的電腦的運行速度有關,至於延時是否內有5秒,請自行調容整
unsignedlongi,j,k,m=n;
for(i=0;i<n;++i)
for(j=0;j<n;++j)
for(k=0;j<n;++i)
while(m--);
}

voidfun(){}

intmain(){
unsignedn=50000;
while(1){
fun();
delay(n);//延時
}
return0;
}

4. C語言如何讓實現定時功能

個人喜歡採用線程的方式。例如在一個線程內sleep一段時間後執行某一函數。

5. C#中基於C/S模式,掛在虛擬服務器上,做一個定時器,每天11點執行一個方法。

用線程。

很簡單,用線程,每隔一段時間判斷當前時間是否為某個時間點,內

如果是則執行代容碼;

如果不是則線程休息一段時間;

while(true)
{
DateTimeexTime=....;//執行時間
DateTimenowTime=DateTime.Now;//當前時間
if(nowTime>exTime)
{
//執行某代碼
}
else
{
Thread.Sleep(1000*60);//停止1分鍾
}
}

上面是線程執行的代碼,停止的時間及判斷的時間按需要自己控制。

6. 單片機中c/t=0時是定時方式,c/t=1是計數方式。定時和計數有什麼區別嗎請舉例子,比喻。謝謝啦

定時器/計數抄器本質上都是襲計數器,只不過數的東西不一樣.
定時器/計數器做為定時器來用的時候,是數的單片機時鍾的脈沖個數,也就是說,單片機的時鍾做為定時器/計數器的時鍾源,因為單片機的時鍾一般比較固定,因此,我們就知道一個脈沖佔多長時間,因為根據脈沖的個數,就能推算出時間,就能做定時器用.
比如:12MHz的傳統51單片機,一個脈沖周期是1us,如果定時器數了10個脈沖周期就中斷了,說明10us時間到了.

而作為計數器的時候,數的是來自引腳上的脈沖,也就是說,是引腳上的脈沖做為定時器/計數器的時鍾源,如果這個脈沖是規律的,周期是固定的,那麼,也可以實現定時,比如,如果引腳的脈沖是10KHz的,那麼,一個脈沖周期是100us,如果定時器/計數器數了10個脈沖周期就中斷,說明1ms時間到了.

但是,如果引腳上的脈沖頻率不固定,時高時低,那麼,就沒辦法根據脈沖個數算出時間來,此時,就只是單純的計數功能.

總而言之,定時器/計數器本質都是對脈沖計數,只是作為定時器,數的是內部的脈沖,做為計數器,數的是外部的脈沖,如果脈沖固定,外部脈沖也可以用來定時.

7. C語言定時器,例如過了60秒開始執行程序,注釋

#include<stdio.h>

#include<time.h>//需要頭文件
voidsleeptime(inttm)//寫一個函數睡眠tm秒
{

intstart=time(0);//獲取進入函數時的時間

while(time(0)-start<tm);//獲取當前時間-進入函數時間如果沒內到tm那麼長則容循環至滿足為止

}

voidmain()

{

sleeptime(60);

printf("asdasdasdas");

}

8. C語言定時完成任務

使用抄定時器控制項,當時間到每個固定時候就觸發消息

如:c++builder中有timer控制項,可以設置每一個固定時間執行一段代碼(如每1秒鍾),代碼中判斷該時間是否和計算機時間相同,相同就觸發消息

也可以:用while(1)循環,循環中加入sleep(毫秒)函數。也可以固定時間執行一次

9. C語言如何定時

#include <stdio.h>
#include <time.h>
main()
{
int i;
for(i=99;i>0;i--)
{
printf("%d",i);
sleep(1000);
printf("\r \r"); /*這里兩個\r之間又兩個空格,網路給省略了*/
}
printf("time is up");
}

注意:TC裡面好像沒有sleep函數,可以內用delay,但這個很不準確容

10. 求教怎麼在C語言中使用定時器

簡單使用,比如初始化,回讀計數值,可以通過訪問定時器的寄存器的方式完成
如果需要定時器中斷服務,要編寫中斷服務程序,並設置中斷向量表

熱點內容
影視轉載限制分鍾 發布:2024-08-19 09:13:14 瀏覽:319
韓國電影傷口上紋身找心裡輔導 發布:2024-08-19 09:07:27 瀏覽:156
韓國電影集合3小時 發布:2024-08-19 08:36:11 瀏覽:783
有母乳場景的電影 發布:2024-08-19 08:32:55 瀏覽:451
我准備再看一場電影英語 發布:2024-08-19 08:14:08 瀏覽:996
奧迪a8電影叫什麼三個女救人 發布:2024-08-19 07:56:14 瀏覽:513
邱淑芬風月片全部 發布:2024-08-19 07:53:22 瀏覽:341
善良媽媽的朋友李采潭 發布:2024-08-19 07:33:09 瀏覽:760
哪裡還可以看查理九世 發布:2024-08-19 07:29:07 瀏覽:143
看電影需要多少幀數 發布:2024-08-19 07:23:14 瀏覽:121