Tag: 计时器

无需等待即可从用户那里获得输入 – C语言..!

我正在编写一个简单的计时器,它从00s到55s运行,然后再从00开始计数,并一直计数直到用户停止计时。 为此,我为用户提供了两个选项:1。启动和2.重置。 选择第一个运行程序,并选择第二个,因为我认为,将把计时器转为00s并保持在那里。 现在我面临的问题是我希望在不停止计时器的情况下从用户那里获得输入(即,在程序运行时允许用户随时输入2,这样他就可以停止正在进行的计数)。 我试图使用像getch()和scanf()这样的函数,但它们正在停止计时器,这完全破坏了程序。 任何帮助赞赏的人.. !!

C ++细粒度时间

下面的代码将0作为函数的运行时。 任何人都可以指出错误吗? struct timeval start,end; long seconds,useconds; gettimeofday(&start, NULL); int optimalpfs=optimal(n,ref,count); gettimeofday(&end, NULL); seconds = end.tv_sec – start.tv_sec; useconds = end.tv_usec – start.tv_usec; long opt_runtime = ((seconds) * 1000 + useconds/1000.0) + 0.5; cout<<"\nOptimal Runtime is "<<opt_runtime<<"\n"; 我得到的开始和结束时间都相同。我得到以下输出 Optimal Runtime is 0 请告诉我错误。

一个简单的超时function

我在产品系列代码中遇到了一个超时function,让我感到非常困惑: int TestTimeOut(unsigned long Timed_Val1, unsigned long Timed_Val2) { Timed_Val2 = Timed_Val1 + (Timed_Val2 * 200); if (((Timed_Val1 > Timed_Val2) && (sys_msec Timed_Val2)) || ((Timed_Val1 < Timed_Val2) && ((sys_msec Timed_Val2)))) return TRUE; return FALSE; } 以下是它的使用方法: unsigned long Timeout = sys_msec; #define MAX_TIMEOUT 15L while (!com_eot(1)) //to check if some transmission in progress in COM1 […]

Win32 API计时器

我正在使用系统定时器(clock()函数,请参阅time.h)来计算一些串行和USB通信。 我所需要的只是约1毫秒。 我注意到的第一件事是个别时间可以超出(加或减)10毫秒。 随着事件的发生,对一些较小的事件进行定时导致时间不准确。 总体时间略好一些。 在MSDN上有点根后,我偶然发现了windows多媒体库中的定时器(timeGetTime(),参见MMSystem.h)。 这对于1ms的水平而言具有相当好的准确性。 之后发生了奇怪的事情,经过几天的完美工作(可爱的日志和有用的时间),这一切都变成了梨形,因为这个API也开始显示这种奇怪的粒度(而不是一堆小通信消息需要3ms,2ms,3ms,2ms,3ms等它出现了0ms,0ms,0ms,0ms,15ms等。重新启动PC恢复了正常的准确性但是在一些不确定的时间(一小时左右之后),anomoly返回了。 任何人都对如何在Windows XP(32位Pro,使用Visual Studio 2008)上获得这种级别的计时准确性有任何想法或建议。 我的小时间class: class TMMTimer { public: TMMTimer( unsigned long msec); TMMTimer(); void Clear() { is_set = false; } void Set( unsigned long msec=0); bool Expired(); unsigned long Elapsed(); private: unsigned long when; int roll_over; bool is_set; }; /** Main constructor. */ TMMTimer::TMMTimer() { is_set […]

Clock_nanosleep()尚不支持CLOCK_MONOTONIC_RAW。 怎么处理这个?

目前在Debian Jessie上使用CLOCK_MONOTONIC_RAW的clock_nanosleep返回EOPNOTSUPP。 如何解决问题并补偿可能在定时器循环中应用于CLOCK_MONOTONIC的NTP调整? clock_nanosleep本身是否也受到NTP调整的影响? 如果在睡觉时进行调整, clock_nanosleep睡眠时间会更长吗? 在我的特定情况下,我是否应该担心可能的CLOCK_MONOTONIC NTP调整? 考虑到我的代码将在没有实时时钟的系统上运行并且可能不时丢失Internet连接,NTP应用于CLOCK_MONOTONIC的最大可能“时间跳转”是什么? 长话故事。 我正在使用一个简单的循环模拟音频文件播放,我需要保持一致的播放位置。 带有TIMER_ABSTIME标志的clock_nanosleep似乎正在完成工作,但我不确定CLOCK_MONOTONIC是否足以避免播放位置的明显跳跃。 这是我正在使用的代码: clock_gettime(CLOCK_MONOTONIC, &deadline); // run until asked to stop while(!need_quit(stop_mutex_signal)) { // do stuff … // add time ms to previous deadline deadline.tv_nsec += device->periodTime * NANOSECONDS_PER_MILLISEC; // normalize the time to account for the second boundary if(deadline.tv_nsec >= NANOSECONDS_PER_SEC) { deadline.tv_nsec -= […]

如何在Windows上的C中实现计时器

如何在C中创建一个计时器,在时间到期后,我应该可以调用一个回调函数。 平台是窗户。 有人可以指导我 此致,Mithun

c中的线程计时器

有人可以帮助我将我的代码转换为工作代码: #include #include #include #include pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; /* call back function – inform the user the time has expired */ void timeout_call_back() { printf(“=== your time is up ===\n”); // doing some other stuff } /* Go to sleep for a period of seconds */ static void* start_timer(void *args) { /* function pointer […]

如何在C中为Windows创建multithreading?

我不知道如何在C中创建线程,我看到了关于pthread.h库的评论,但后来我听说它仅适用于Linux操作系统,我有一个函数,它是一个计时器,我想用这个函数创建一个线程但是我不知道我需要使用的库和语法编写代码,如果有人可以提供一个简单的代码与线程,或告诉我我需要放置什么东西和函数的参数。 这里是我创建倒计时用户应用的特定时间的函数:我需要创建一个具有该function的线程。 function(倒计时): #include #include #include #include void countdown(int second) { int secs = 1; time_t unix; struct tm * timeinfo; time(&unix); timeinfo = localtime(&unix); int t1 = timeinfo->tm_sec; int t2 = timeinfo->tm_sec; int i = 0; while(1 == 1) { time(&unix); timeinfo = localtime(&unix); if((t1 + i) == timeinfo->tm_sec) { system(“cls”); printf(“Time left %d\n”, […]

以特定间隔执行function

任务是每隔x(比如x = 10)秒执行一个函数(比如Processfunction() )。 使用下面的代码,我可以每隔x秒调用一次Processfunction() 。 问题:如何处理函数完成执行需要10秒以上的情况? 一种方法是使用一个标志来指示Processfunction()执行的结束并在调用Processfunction()之前检查它。 有一个更好的方法吗 ? #include #include // for sleep() and usleep() void *timerthread(void *timer_parms) { struct itimerspec new_value; int max_exp, fd; struct timespec now; uint64_t exp; ssize_t s; struct timer_params *p =(struct timer_params*)timer_parms; printf(“starttimer Start\n”); /* Create a CLOCK_REALTIME absolute timer with initial expiration and interval as specified in […]

用C创建一个Timer

如何创建计时器? 像Visual Basic中的计时器; 你设置一个间隔,如果启用了定时器,它会一直等到时间结束。 我不想使用现有的库,因为我想知道它是如何工作的。 所以..我只是希望有人可以解释我的计时器是如何工作的,也许可以给我一个代码来创建我自己的例子 – 如果它不是太先进的话。 编辑:我想为Linux系统创建一个。