当前位置:首页 » 城管服务 » 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