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

📄 基于 linux 和 minigui 的嵌入式系统软件开发指南(一).htm

📁 Programming Embedded Systems in C and C
💻 HTM
📖 第 1 页 / 共 2 页
字号:
            的这种设计,无法处理达到完整的多窗口支持,这的确是一个结构设计上的不足和缺陷。不过,这实际是 MiniGUI-Lite 
            不同于其他窗口系统的一个特征。因为处理每个进程之间的互相剪切问题,将导致客户和服务器之间的通讯量大大增加,但实际上在许多嵌入式系统当中这种处理是没有必要的。在类似 
            PDA 
            的嵌入式系统中,往往各个程序启动后,就独占屏幕进行绘制输出,其他程序根本就没有必要知道它现在的窗口被别的进程剪切了,因为它根本就没有机会输出到屏幕上。所以,在 
            MiniGUI-Lite 
            当中,当一个进程成为最顶层程序时,服务器会保证其输出正常,而当有新的程序成为最顶层程序时,服务器也会保证其他程序不能输出到屏幕上。但这些进程依然在正常执行着,不过,服务器只向最顶层的程序发送外部事件消息。<BR><BR>&nbsp;&nbsp;&nbsp; 
            表 1 给出了 MiniGUI-Threads 和 MiniGUI-Lite 
            的区别。从表中总结的区别看来,MiniGUI-Threads 适合于功能单一、实时性要求很高的系统,比如工业控制系统;而 
            MiniGUI-Lite 适合于功能丰富、结构复杂、显示屏幕较小的系统,比如 PDA 
            等信息产品。<BR><BR>&nbsp;&nbsp;&nbsp; 表 1 MiniGUI-Threads 和 MiniGUI-Lite 
            的区别</P>
            <TABLE height=282 borderColorDark=#ffffff cellPadding=0 width=583 
            borderColorLight=#000000 border=1>
              <TBODY>
              <TR>
                <TD width=78 height=19><FONT color=#ffffff>.</FONT></TD>
                <TD width=188 height=19>MiniGUI-Threads</TD>
                <TD width=297 height=19>MiniGUI-Lite</TD></TR>
              <TR>
                <TD width=78 height=37>多窗口支持</TD>
                <TD width=188 height=37>完全</TD>
                <TD width=297 height=37>不能处理进程间窗口的剪切,但提供进程内多窗口的完全支持</TD></TR>
              <TR>
                <TD width=78 height=57>字体支持</TD>
                <TD width=188 height=57>支持点阵字体(VBF、RBF)和矢量字体(Adobe Type1 和 
                  TrueType)</TD>
                <TD width=297 height=57>目前尚不支持对 Adobe Type1 和 TrueType 
                等矢量字体的支持</TD></TR>
              <TR>
                <TD width=78 height=38>线程间消息传递</TD>
                <TD width=188 height=38>通过 MiniGUI 的消息函数,可在不同的线程之间传递消息</TD>
                <TD width=297 height=38>未考虑多线程应用,不能直接通过 MiniGUI 
                消息函数在不同线程之间传递消息</TD></TR>
              <TR>
                <TD width=78 height=38>多线程窗口</TD>
                <TD width=188 height=38>MiniGUI 能够处理不同线程之间的窗口层叠</TD>
                <TD width=297 height=38>不能处理多线程之间的窗口层叠</TD></TR>
              <TR>
                <TD width=78 height=57>其他</TD>
                <TD width=188 height=57>基于线程的 C/S 结构,系统健壮性较差,因此要求系统经过严格测试</TD>
                <TD width=297 height=57>采用 UNIX Domain Socket 的基于进程的 C/S 
                  结构,可建立健壮的软件架构。并提供了方便的高层 IPC 机制</TD></TR></TBODY></TABLE>
            <P>&nbsp;&nbsp;&nbsp; 除上表中列出的不同之外,MiniGUI-Threads 和 MiniGUI-Lite 的 
            API 是一致的。<BR><BR>&nbsp;&nbsp;&nbsp; <B>3:MiniGUI-Threads 
            的典型应用和软件架构</B></P>
            <P>&nbsp;&nbsp;&nbsp; 本文介绍的基于 MiniGUI-Threads 
            典型应用是一个计算机数字控制(CNC)系统。这个系统是由清华大学基于 RT-Linux 建立的机床控制系统。该系统使用 
            MiniGUI-Threads 作为图形用户界面支持系统。图 1 是该 CNC 系统的用户界面。</P>
            <P align=center><A 
            href="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/2001070301Image01.gif" 
            target=_blank><IMG height=375 
            alt="清华大学基于 RT-Linux 和 MiniGUI 的数控系统主界面" 
            src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/2001070301Image01.gif" 
            width=500 align=center border=0></A></P>
            <P align=center>图 1 清华大学基于 RT-Linux 和 MiniGUI 的数控系统主界面</P>
            <P>&nbsp;&nbsp;&nbsp; 图 2 是该系统的架构。在用户层,该系统有三个线程,一个作为 GUI 
            主线程存在,另一个作为监视线程监视系统的工作状态,并在该线程建立的窗口上输出状态信息,第三个线程是工作线程,该线程执行加工指令,并通过 
            RT-Linux 的实时 FIFO 和系统的实时模块进行通讯。</P>
            <P align=center><IMG height=178 
            alt="清华大学基于 RT-Linux 和 MiniGUI 的数控系统架构" 
            src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/2001070301Image02.gif" 
            width=351 border=0></P>
            <P align=center>图 2 清华大学基于 RT-Linux 和 MiniGUI 的数控系统架构</P>
            <P>&nbsp;&nbsp;&nbsp; <B>4:MiniGUI-Lite 的典型应用和软件架构</B></P>
            <P>&nbsp;&nbsp;&nbsp; 这里介绍的典型应用是一个基于 MiniGUI-Lite 的 PDA。该 PDA 
            由国内某公司基于 Linux 开发,其上可以运行各种 PIM 程序、浏览器以及各种游戏程序。图 3 是该 PDA 的用户界面。</P>
            <P align=center><IMG height=320 
            src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/2001070301Image03.jpg" 
            width=240 border=0></P>
            <P align=center>图 3 某公司开发的基于 MiniGUI 的 PDA 软件界面</P>
            <P>&nbsp;&nbsp;&nbsp; 该系统中的所有应用程序都以 Linux 进程的形式执行,mginit(即 
            MiniGUI-Lite)提供了输入法支持和应用程序管理功能。当应用程序之间需要通讯时,可以通过 MiniGUI-Lite 所提供的 
            request/response 接口实现。图 4 是该系统的架构。</P>
            <P align=center><IMG height=218 alt="某公司开发的基于 MiniGUI 的 PDA 软件架构" 
            src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/2001070301Image04.gif" 
            width=351 border=0></P>
            <P align=center>图 4 某公司开发的基于 MiniGUI 的 PDA 软件架构</P>
            <P>&nbsp;&nbsp;&nbsp; <B>5:小结</B></P>
            <P>&nbsp;&nbsp;&nbsp; 本文讲解了 MiniGUI-Threads 和 MiniGUI-Lite 
            之间的区别,并举例说明了基于这两个不同版本的不同软件架构。嵌入式程序开发人员必须明白这两个版本之间的区别,并针对具体应用恰当选择使用哪个版本。</P>
            <P>&nbsp;&nbsp;&nbsp; <B>作者简介</B></P>
            <P>&nbsp;&nbsp;&nbsp; 魏永明(<A 
            href="mailto:ymwei@minigui.org">ymwei@minigui.org</A>),男,27 
            岁,工学硕士。国内最有影响的自由软件项目之一--MiniGUI 的创始人及主要开发人员。著有《Linux 实用教程》与《学用 Linux 
            与 Windows NT》,并主持翻译了《Red Hat Linux 奥秘》、《Linux 编程宝典》 等大量优秀的 Linux 
            技术著作。是清华大学 AKA Linux 编程技术系列讲座的主讲人。&nbsp;</P>
            <P><B>&nbsp;&nbsp;&nbsp; 本站声明:</B>本文出处<A 
            href="http://www.cn.ibm.com/developerWorks/linux/index.shtml" 
            target=_blank>IBM : developerWorks 中国网站</A>,如果有其他Linux站点需要转载本文,请与<A 
            href="http://www.cn.ibm.com/developerWorks/linux/index.shtml" 
            target=_blank>IBM : developerWorks 中国网站</A>联系,或与<A 
            href="mailto:ymwei@minigui.org">魏先生</A>联系。任何读者对本站转载提出意见,<A 
            href="mailto:web@pocketix.com">请与我站联系</A>。 
      </P></TD></TR></TBODY></TABLE></DIV>
      <DIV align=center>
      <TABLE height=10 cellSpacing=0 cellPadding=0 width="50%" border=0>
        <TBODY>
        <TR>
          <TD width="100%" height=10></TD></TR></TBODY></TABLE></DIV>
      <DIV align=center>
      <TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
        <TBODY>
        <TR>
          <TD width="100%"><FONT size=2>本文出处:<FONT class=txd size=2>【<A 
            href="http://www.cn.ibm.com/developerWorks/linux/index.shtml" 
            target=_blank>IBM : developerWorks 
        中国网站</A></FONT>】</FONT></TD></TR></TBODY></TABLE></DIV>
      <DIV align=center>
      <TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
        <TBODY>
        <TR>
          <TD vAlign=bottom align=left width="50%"><INPUT style="COLOR: #000000; BORDER-TOP-STYLE: inset; BORDER-RIGHT-STYLE: inset; BORDER-LEFT-STYLE: inset; BACKGROUND-COLOR: #ffbd00; BORDER-BOTTOM-STYLE: inset" onclick=javascript:window.close() type=button value=关闭窗口> 
          </TD>
          <TD vAlign=bottom align=right width="50%"><A 
            href="http://www.pocketix.com.cn/" target=_top><IMG height=46 
            alt=博利思软件有限公司 
            src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/penguin56a1.gif" 
            width=40 border=0></A></TD></TR></TBODY></TABLE></DIV>
      <DIV align=center>
      <TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
        <TBODY>
        <TR>
          <TD width="100%">
            <HR SIZE=1>
          </TD></TR></TBODY></TABLE></DIV>
      <DIV align=center>
      <TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
        <TBODY>
        <TR>
          <TD align=middle width="100%"><FONT size=2>版权所有,需要转载请<A 
            href="mailto:web@pocketix.com">联系通知我们</A>,嵌入式Linux</FONT></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE></CENTER></DIV>
<TABLE height=15 cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD width="100%" background="" 
height=15></TD></TR></TBODY></TABLE></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -