etisserant@49: #include etisserant@49: #include etisserant@49: #include etisserant@49: #include etisserant@49: etisserant@110: int localcount = 0; etisserant@110: etisserant@49: void timer_notify() etisserant@49: { etisserant@49: struct _timeb timebuffer; etisserant@110: if(++localcount % 50 == 0){ etisserant@110: printf("PLC tick : %d\n",localcount); etisserant@110: fflush(stdout); etisserant@110: } etisserant@49: etisserant@49: _ftime( &timebuffer ); etisserant@75: __CURRENT_TIME.tv_sec = timebuffer.time; etisserant@75: __CURRENT_TIME.tv_nsec = timebuffer.millitm * 1000000; etisserant@49: __run(); etisserant@49: } etisserant@49: etisserant@49: int main(int argc,char **argv) etisserant@49: { etisserant@49: HANDLE hTimer = NULL; etisserant@49: LARGE_INTEGER liDueTime; etisserant@49: etisserant@75: liDueTime.QuadPart = -10000 * maxval(common_ticktime__,1); etisserant@49: etisserant@49: // Create a waitable timer. etisserant@75: hTimer = CreateWaitableTimer(NULL, FALSE, "WaitableTimer"); etisserant@49: if (NULL == hTimer) etisserant@49: { etisserant@49: printf("CreateWaitableTimer failed (%d)\n", GetLastError()); etisserant@49: return 1; etisserant@49: } etisserant@49: etisserant@57: if( __init(argc,argv) == 0 ){ etisserant@49: etisserant@75: printf("Tick Time : %d ms\n", common_ticktime__); etisserant@57: // Set a timer etisserant@57: if (!SetWaitableTimer(hTimer, &liDueTime, common_ticktime__, NULL, NULL, 0)) etisserant@57: { etisserant@57: printf("SetWaitableTimer failed (%d)\n", GetLastError()); etisserant@57: return 2; etisserant@57: } etisserant@57: etisserant@57: while(1){ etisserant@57: // Wait for the timer. etisserant@57: if (WaitForSingleObject(hTimer, INFINITE) != WAIT_OBJECT_0) etisserant@57: { etisserant@57: printf("WaitForSingleObject failed (%d)\n", GetLastError()); etisserant@57: break; etisserant@57: } etisserant@79: if (kbhit()) etisserant@79: { etisserant@79: printf("Finishing\n"); etisserant@79: break; etisserant@79: } etisserant@57: timer_notify(); etisserant@57: } etisserant@49: } etisserant@49: __cleanup(); etisserant@49: etisserant@49: return 0; etisserant@49: }