网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61EDA中国电子网 >> 技术文库 >> NIOSII >> 正文
  [组图]uC/GUI NIOS II移植及应用笔记(2)           ★★★ 【字体:
uC/GUI NIOS II移植及应用笔记(2)
作者:FREE    文章来源:电子开发    点击数:    更新时间:2008-4-15    

uC/GUI Simulation的应用
uC/GUI提供了一格功能是强大的工具,即Simulation工具他可以在windows环境下模拟uC/GUI的运行结果,为GUI应用程序的开发体供了极大的方便,在模拟器上开发GUI应用程序代码可以几乎无修改的直接应用于目标硬件。

这个模拟器的原理是GUI程序运行后产生一个实时更新的BMP图片然后由gui模拟程序显示出来。这个功能作得太好了,这样子gui程序的开发简直是无敌了。
在下载的uC/GUI源代码中,解压后就能看到一个名叫Simulation的VC6Workspace和project。
在顶楼的图中可以清楚地看到这两个文件。这是uC/GUI的开发人员帮我们做好的。直接打开这个工程就可以在VC6中开发GUI应用程序,uC/GUI高度抽象,应用程序与底层很好的分离,这样为GUI应用程序的开发提供了极大的方便。
下面打开这工程看看里面有什么东西。我使用的VS.Net。没有什么区别,个人认为VS.Net的功能较VC6强大许多。是一个优秀的集成开发环境。
打开工程后我们看看里面都有些什么东西。
 
config和gui文件加我们前面都说过了,里面放的就是Gui的配置文件和gui的源代码。
这里面多了几个文件夹。
Application文件夹,用户存放应用程序文件的地方。
Simulation文件夹模拟器提供初始化和一些配置信息,我们根本不用改动这些东西。
System文件夹,大家知道每个C程序都有一个main函数,这里面就放了这一个东西。
还有一个地方,就是LCD_Driver这个文件夹里面放的是LCDWIN.c这样无论你怎么修改GUI的配置,模拟器都会使用这个驱动程序来实现GUI程序运行结果的正确的显示。

LCDWin.c就是基于windows模拟器的驱动程序,就是通过这个驱动生成模拟器里显示的bmp图片。
弄清楚这些东西,就可以开始uC/GUI编程了。
打开MainTask.c这个文件我们就在这里面编写我们的GUI应用程序。
#include "GUI.h"

extern const GUI_BITMAP bmMicriumLogo;
extern const GUI_BITMAP bmMicriumLogo_1bpp;

下面是自带的一段示例代码。
我们来看看她都干了些什么东西。
/*
  *******************************************************************
  *
  *              main()
  *
  *******************************************************************
*/
void MainTask(void) {
  int Cnt =0;
  int i,YPos;
  int LCDXSize = LCD_GET_XSIZE();
  int LCDYSize = LCD_GET_YSIZE();  /*取得lcd物理尺寸,这个参数是在lcdconf.h里面定义的*/
  const GUI_BITMAP *pBitmap;        /*一个指向预显示的位图的指针,在这里位图是在.c文件里面存储的ps:.c的体积大的吹牛*/
  GUI_Init();                                     /*初始化GUI,这谁痘看得出来*/
                                                        /*这里面除了初始了在guiconf.h里面定义的时用的GUI的所有功能,包括widget,wm等功能的初始化,当然还有lcd的控制器的初始化*/ 
  GUI_SetBkColor(GUI_RED); GUI_Clear();      /*设置背景颜色为RED,其结果如图*//*
 
/*说明一下这个模拟器的窗口,最大的那个窗口显示的就是GUI程序的运行结果。标题里显示的是当前LCD的配置参数,colors显示的当前gui系统能显示的所有的颜色,即调色板。log是gui的日志,这个功能会在后面说明*/
  GUI_Delay(1000);   /*延迟1000个时钟节拍,这里我们的gui是应用在ucos rtos上面,这里的时钟节拍就是ucos的时钟节拍*/
  GUI_SetBkColor(GUI_BLUE);  /*背景设为BLUE*/
  GUI_Clear();  /*清除当前的window,没有窗口就清理整个屏幕*/
  GUI_Delay(1000);
  GUI_SetColor(GUI_WHITE);
  for (i="0"; i<1000; i+=10) {
    GUI_DrawHLine(i,0,100);
    GUI_DispStringAt("Line ",0,i);
    GUI_DispDecMin(i);
  } /*这段代码的功能就是每隔10行显示文字line和一条直线。*/
 
  GUI_Delay(1000);
  GUI_SetColor(0x0);  //设置显示颜色为黑色!?黑色对着呢!1时点亮0是熄灭你看看是不黑色。
  GUI_SetBkColor(0xffffff);
  for (i="0"; i<160; i++) {
    int len = (i<80) ? i : 160-i;
    GUI_DrawHLine(i,20,len+20);
  } //显示一个三角形
 
GUI_Clear();
  if (LCD_GET_YSIZE()>(100+bmMicriumLogo_1bpp.YSize)) {
    pBitmap=&bmMicriumLogo; //设置要显示的位图为MicriumLogo
  } else {
    GUI_SetColor(GUI_BLUE);
    pBitmap=&bmMicriumLogo_1bpp;
  }
  GUI_DrawBitmap(pBitmap,(LCDXSize-pBitmap->XSize)/2,10);
  YPos="20"+pBitmap->YSize; //显示位图MicriumLogo
  GUI_SetFont(&GUI_FontComic24B_1);
  GUI_DispStringHCenterAt("www.micrium.com",LCDXSize/2,YPos); //在指定位置以FontComic24B_1字体显示文字www.micrium.com
  GUI_Delay(1000);
  GUI_SetColor(GUI_RED);
  GUI_DispStringHCenterAt("?2002 ", LCDXSize/2,YPos+30);
  GUI_SetFont(&GUI_Font10S_1);
  GUI_DispStringHCenterAt("Micri祄 Inc.",LCDXSize/2,YPos+60);;  //在指定位置以Font10S_1字体显示文字Micrium Inc
  GUI_Delay(1000);
}
截图
 
一个完整的gui应用程序的例子就出来了。接下来将是gui应用程序的开发。
从最简单的文字到window到复杂的控件。
一步一步来,我也在学习。
在硬件控制器彻底搞定之前都将使用这个东西开发应用程序。

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    uC/GUI NIOS II移植及应用笔…
    NiosII多处理器系统方案设计
    基于Nios II系统1553B总线网…
    基于NIOS嵌入式软核的硬盘录…
    Nios II的Boot过程分析…
    基于Nios II的自动指纹识别系…
    基于Nios软核的嵌入式Intern…
    Nios II嵌入式Web服务器的实…
    基于Nios嵌入式软核处理器的…
    NIOS 软核处理器的Linux引导…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    湘ICP备08001332号 站长:61EDA