新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于Linux和MiniGUI的某型指控终端人机接口设计

基于Linux和MiniGUI的某型指控终端人机接口设计

作者: 时间:2010-10-29 来源:网络 收藏

  在系统内部,I/0设备的存取是通过一系列的入口点来进行的,字符型设备提供以下入口点:open,close,read,write,ioctl;它们分别对应打开设备、关闭设备、读设备、写设备以及其他操作。这些入口点的定义是通过一个重要的数据结构file_operations来完成的。

  键盘驱动程序编制的要点有:

  (1)定义一个*的健值矩阵,作为输出,按下一个按键,得到对应的键值;

  (2)初始化时设置所用到的I/O端口的读/写模式,行线为写,列线为读;

  (3)定义键盘扫描函数scan_kbd()。它的算法是:初始化时所有的行线置低电平,如果没有键按下,列线都将读到高电平。否则,任何键的闭合将造成该列成为低电平。

  (4)在read入口点,也就是file_operations结构定义的read方法中,调用scan_kbd()。这样,驱动程序就可以定时扫描几个I/O端口,获取键值,然后通过putuser发送到用户地址空间。

  设置I/O模式,读/写I/0端口的位,可以通过头文件S3C2410.h中专门定义的宏set_gpio_ctrl,write_gpio_bit,read_gpio_bit来进行。

  键盘驱动程序经过编译后,可以作为一个设备文件编译入内核,也可以采取模块动态加载的方式。

  3.2 MiniGUl IAL引擎的实现

  通常,在使用前应针对目标系统的特点进行配置和编译,例如指定目标操作系统、运行模式、图形引擎和输入引擎、字体类型、字符集、所支持的控件类等。该课题中,因为采取了自行的键盘作为输入设备,因此最重要的配置是输入引擎(input abstract lay-er,IAL)。

  抽象层是一组不依赖于硬件的抽象,其作用类似于操作系统的驱动程序,将底层的硬件操作与操作系统隔离,这样做简化了在不同平台上移植的难度。开发特定的键盘输入,主要是完成两部分工作:键盘驱动程序和键盘输入引擎开发。前者负责从键盘接收原始输入事件和数据,后者负责将原始的输入事件和数据转换成MiniGUl抽象的键盘事件和数据。

  在代码实现上,通过INPUT数据结构来表示输入引擎。该结构中指定了若干函数指针,编写特定的输入引擎,主要就是编码实现INPUT结构中的各个函数。新的IAL引擎编写完成后,应加入进行配置,然后对MiniGUI进行编译。在工程实践中,一种比较简便的方法是对MiniGUI已经实现的引擎进行修改。

  3.3 图形界面

  MiniGUI是一个图形用户界面支持系统,通常的GUI编程概念均适用于MiniGUI编程,如窗口和事件驱动编程等。嵌入式系统完成的功能一般比较单一,对于该系统而言,重点在于实现部分,因此只需要轮询用户的按键输入即可。如图2所示。


  MiniGUI中有三种窗口类型:主窗口、对话框和控件窗口。每一个MiniGUI应用程序一般都要创建一个主窗口,作为应用程序的主界面或开始界面。MiniGUI包含有许多控件类,如静态框、按钮、列表框、编辑框、进度条等,这些控件类可以实现和Windows标准控件类似的效果。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭