⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.c

📁 PocketCMD是与pocketconsole配合实用的命令行解释器(Shell)
💻 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 + -