📄 timer.c
字号:
/* * TIMER.C - timer internal command. * * clone from 4nt timer command * * 20 Aug 1999 * started - Paolo Pantaleo <paolopan@freemail.it> */#include "config.h"#ifdef INCLUDE_CMD_TIMER#include "cmd.h"#define NCS_NOT_SPECIFIED -1#define NCS_ON 1#define NCS_OFF 0//print timer status#define PS ConOutPrintf(_T("Timer %d is %s: "),clk_n,cS?_T("ON"):_T("OFF")); \ PrintTime()//print timer value#define PT(format) PrintElapsedTime(GetTickCount()-cT,format) //current timer Time (at wich started to count)#define cT clksT[clk_n]//current timer status#define cS clksS[clk_n]static VOIDPrintElapsedTime (DWORD time,INT format){ DWORD h,m,s,ms;#ifdef _DEBUG DebugPrintf(_T("PrintTime(%d,%d)"),time,format);#endif switch (format) { case 0: ConOutPrintf(_T("Elapsed %d msecs\n"),time); break; case 1: ms = time % 1000; time /= 1000; s = time % 60; time /=60; m = time % 60; h = time / 60; ConOutPrintf(_T("Elapsed %02d%c%02d%c%02d%c%02d\n"), h,cTimeSeparator, m,cTimeSeparator, s,cDecimalSeparator,ms/10); break; }}INT CommandTimer (LPTSTR cmd, LPTSTR param){ // all timers are kept static DWORD clksT[10]; // timers status // set all the clocks off by default static BOOL clksS[10]={FALSE,FALSE,FALSE,FALSE, FALSE,FALSE,FALSE,FALSE,FALSE,FALSE}; // TRUE if /S in command line BOOL bS = FALSE; // avoid to set clk_n more than once BOOL bCanNSet = TRUE; INT NewClkStatus = NCS_NOT_SPECIFIED; // the clock number specified on the command line // 1 by default INT clk_n=1; // output format INT iFormat=1; // command line parsing variables INT argc; LPTSTR *p; INT i; if (_tcsncmp (param, _T("/?"), 2) == 0) { ConOutPrintf( _T("allow the use of ten stopwaches.\n") _T("\n") _T("TIMER [ON|OFF] [/S] [/n] [/Fn]\n") _T("\n") _T(" ON set stopwach ON\n") _T(" OFF set stopwach OFF\n") _T(" /S Split time. Return stopwach split\n") _T(" time without changing its value\n") _T(" /n Specifiy the stopwach number.\n") _T(" Stopwaches avaliable are 0 to 10\n" ) _T(" If it is not specified default is 1\n") _T(" /Fn Format for output\n") _T(" n can be:\n") _T(" 0 milliseconds\n") _T(" 1 hh%cmm%css%cdd\n") _T("\n"), cTimeSeparator,cTimeSeparator,cDecimalSeparator); ConOutPrintf( _T("if none of ON, OFF or /S is specified the command\n") _T("will toggle stopwach state\n") _T("\n")); return 0; } p = split (param,&argc); //read options for (i = 0; i < argc; i++) { //set timer on if (!(_tcsicmp(&p[i][0],_T("on"))) && NewClkStatus == NCS_NOT_SPECIFIED) { NewClkStatus = NCS_ON; continue; } //set timer off if (!(_tcsicmp(&p[i][0],_T("off"))) && NewClkStatus == NCS_NOT_SPECIFIED) { NewClkStatus = NCS_OFF; continue; } // other options if (p[i][0] == _T('/')) { // set timer number if (_istdigit(p[i][1]) && bCanNSet) { clk_n = p[i][1] - _T('0'); bCanNSet = FALSE; continue; } // set s(plit) option if (_totupper(p[i][1]) == _T('S')) { bS = TRUE; continue; } // specify format if(_totupper(p[i][1]) == _T('F')) { iFormat = p[i][2] - _T('0'); continue; } } } // do stuff (start/stop/read timer) if(NewClkStatus == NCS_ON) { cT=GetTickCount(); cS=TRUE; PS; freep(p); return 0; } if(bS) { if(cS) { PS; PrintElapsedTime(GetTickCount()-cT, iFormat); freep(p); return 0; } cT=GetTickCount(); cS=TRUE; PS; freep(p); return 0; } if(NewClkStatus == NCS_NOT_SPECIFIED) { if(cS){ cS=FALSE; PS; PrintElapsedTime(GetTickCount()-cT, iFormat); freep(p); return 0; } cT=GetTickCount(); cS=TRUE; PS; freep(p); return 0; } if(NewClkStatus == NCS_OFF) { if(cS) { cS=FALSE; PS; PrintElapsedTime(GetTickCount()-cT, iFormat); freep(p); return 0; } PS; freep(p); return 0; } freep(p); return 0;}#endif /* INCLUDE_CMD_TIMER */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -