本文摘要:1章节 uCOS-II是一个短小而功能强大的动态嵌入式操作系统。
1章节 uCOS-II是一个短小而功能强大的动态嵌入式操作系统。在JeanJ.Labrosse先生所着.由邵贝贝教授翻译成的Micro/uCOS-IITHEREAL-TIMEKERNEL(SecondEdition)一书中对这一操作系统做出了精彩的介绍,该书是一部关于uCOS-II操作系统的经典教材,同时在书中获取了关于uCOS-II在windows环境下的重制的4个范例。本文对其第一个范例不作一个在redhatlinux9.0上的重制版本。
重制的工作主要集中于在三个方面,下文将分成三章,融合代码详尽讲解。文章的最后将讲解我的试验平台并展示我的试验结果。
2字符串的表明 字符串表明函数PC-DispStr在文件pc.c中,这个文件本身不是uCOS-II的一部分。它的主要工作是创建一系列的功能函数来充分发挥PC机的强劲功能,并被测试代码所调用。 2.1设置前景色和后景色 我们用于类似于prinf(\033[30m)的语句来设置颜色.转义序列就是一个让shell继续执行一个类似步骤的控制指令。
转义序列一般来说都是以ESC结尾(这也是它的命名原因)。在shell里回应为^[。
这种表示法必须一点时间去适应环境,也可以用\033已完成完全相同的工怍(ESC的ASCII码用十进制回应就是27,=用八进制回应的33)。\033声明了转义序列的开始,然后是[开始定义颜色。下面我们要自由选择前景色(这里是32,代表绿色)。
背景色的40回应黑色。要是想让提示符后面的文字也变为绿色,我们用\033[0m重开转义序列,\033[0m是shell的配置文件颜色。前景色和背景色都有8种能用的自由选择。
可选颜色:红色、绿色、黄色、蓝色、洋红、青色和白色。他们对应的颜色代码是:30(黑色)、31(红色)、32(绿色)、33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。用某种程度色方法设置背景色,不过要把第一个数字3替换成4,例如40、41、42、43、44、45、46、47。
虽然在这里可以按照上面讲解的对应关系定义改动在pc.h中定义的前景色和后景色的宏,使对应关系更为具体。(留意:他的后面一位回应前景色,前面一位回应后景色),但是我们在这里的设计思路是尽可能不对原书中的代码不作改动,所以在函数的构建中必要用于switch语句,对适当的前景色和后景色。(linux的shell只反对以上几种颜色) switch(color0xF0)/*查阅前景色*/ {caseDISP_FGND_BLACK:printf(\033[30m);break; } switch(color0x0F)/*查阅后景色*/ {caseDISP_BGND_BLACK:prinf(\033[40m); break; } 2.2追踪光标的方位 我用于printf(\033[%u;%uH,y+1,x+1)来追踪光标的方位。33是声明了转义序列的开始,上文早已讲解,仍然累叙,[y;xH是设置光标方位的格式。
x和y分别回应横轴和纵轴。 3键盘输入 键盘输入函数PC_GetKey在windows环境下,由于有库函数kbhit回到最近所敲的按键.就很更容易构建。而在linux环境下我们必须结构自己的kbhit,在参考文献2中John.Wiley.Sons先生获取了一种现成的构建方法(这个方法不会堵塞read函数.在本文中并不限于),这里我们用于了另外的一种构建方法,下面讲解得出其构建代码. intkbhit(void){ structtimevaltv; fd_setreadFd; structtermiosnewKbdMode; if(!inited){ newKbdMode.c_lflag=~(ICANON|ECHO); newKbdMode.c_cc[VTIME]=0; newKbdMode.c_cc[VMIN]=1; tcsetattr(0,TCSANOW,newKbdMode); atexit(rekbd); inited=1; } tv.tv_sec=0; tv.。
本文来源:必威betway体育-www.zhao-xing.com