在linux上模拟uCOS-II实时操作系统_新威尼斯人 - 新威尼斯人-官方网站

当前位置:首页 > 探索 > 科学

在linux上模拟uCOS-II实时操作系统_新威尼斯人

2020-08-17 22:16:02

新威尼斯人_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.:新威尼斯人。

本文来源:新威尼斯人-www.newpaktv.com

热门推荐