📄 exp2timer.c
字号:
#include "vxWorks.h"
#include "stdio.h"
#include "stdlib.h"
#include "taskLib.h"
#include "sysLib.h"
#include "tylib.h"
#define MAX_MSG_LEN (50) /* 消息队列中消息的最大长度 */
void clk(void)
{
char key;
int cnt, tcnt;
int sysclkrate = sysClkRateGet()/20;
int task_stdin_fd, global_stdin_fd;
int consoleFd;
int stdIN, stdOUT; /* 标准输入/输出设备的文件描述符 */
char c; /* 字符变量 */
char aStr[MAX_MSG_LEN]; /* 字符串缓冲区 */
char bStr[MAX_MSG_LEN]; /* string buffer */
/* 取标准输入/输出设备文件描述符 */
stdIN = ioGlobalStdGet(0);
stdOUT = ioGlobalStdGet(1);
/* 将标准输出设备输出模式设置为RAW */
ioctl(stdOUT, FIOSETOPTIONS, OPT_RAW); /* defined in iolib.h */
task_stdin_fd = ioTaskStdGet(0, STD_IN);
global_stdin_fd = ioGlobalStdGet(STD_IN);
consoleFd = global_stdin_fd;
ioctl (consoleFd, FIOFLUSH, 0);
tcnt = 0;
FOREVER
{
printf("timer value: %03d\r", tcnt++);
/* 清空消息接收缓冲 */
memset(aStr, 0, MAX_MSG_LEN);
sprintf(aStr, "timer value: %03d\r", tcnt);
write(stdOUT, aStr, sizeof(aStr));
taskDelay(sysclkrate);
ioctl (consoleFd, FIONREAD, (int) &cnt);
if(cnt)
{
read(stdIN,&c,1);
/* 判断若输入字符为"ESC键"则退出主循环 */
if(c == '\e')
break;
else if(c == 'r')
{
tcnt=0;
}
else if (c == 'p')
{
printf("Pause .press any key to continue.....\r");
/* 清空消息接收缓冲 */
memset(bStr, 0, MAX_MSG_LEN);
sprintf(bStr, "Press any key to continue.....\n");
write(stdOUT, bStr, sizeof(bStr));
memset(bStr, 0, MAX_MSG_LEN);
sprintf(bStr, "Pause \r");
write(stdOUT, bStr, sizeof(bStr));
while(1){
ioctl (consoleFd, FIONREAD, (int) &cnt);
if(cnt)
{
break;
}
}
}
ioctl (consoleFd, FIOFLUSH, 0);
}
}
/* 输出"end"字串 */
write(stdOUT, "\n\rend\n\r", 7);
ioctl (consoleFd, FIOFLUSH, 0);
ioctl (consoleFd, FIOSETOPTIONS, OPT_TERMINAL);
printf("\nTimer end\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -