摘 要: 设计了一种利用嵌入式ARM11 来实现的点菜方式, 提高了餐厅的效率。 在硬件方面采用三星S3C6410 处理器的ARM11, 其具有7 寸的液晶触摸屏, 便于顾客点菜, 在通信方面采用无线传输方式(802.11), 能够实现多个客户端与一个服务器之间进行双向通信。 在软件方面, 采用linux 系统作为操作系统。 点菜界面的设计主要是应用GTK+函数库来说实现的。 系统综合了点菜、娱乐等功能。 测试表明, 该系统具有效率高、节省费用的价值。
随着中国改革开放以来经济的高速发展, 随着电子产品的不断更新与创新, 便利化产品越来越受到人们的青睐, 而点菜系统就是基于这种目的而设计的, 它不但能够满足于菜单的使用而且能够在餐厅里等待的时候享受它带来的的娱乐, 使等待不再是单调乏味的事情。 同时点菜系统的使用能够给餐厅节约一部分费用如减少服务员的数量, 并且给顾客一种的感觉, GTK+做出来的界面在视觉上更使人感觉舒服。
在当今, 大多数Linux 开发都是基于字符命令界面的, 同时在Linux 环境下也可以开发设计出美观大方的图形界面。 多年来linux 经过发展, 在研发人员的努力下已经存在多种可用在Linux 系统下的开发图形界面程序的开发包, 其中较为典型的是Qt 和GTK+.
GTK+是用C 语言编写的, 是用于开发图形界面程序的函数库[1]. GTK+来源于GIMP(GNU ImageMinipulation Program 即GNU 图像处理程序)。 GTK+在GDK(GIMP Drawing Kit 即GIMP 绘图包)基础上创建, 对它进行封装。 GTK+简单易用, 它设计良好, 灵活而富有扩展性。 它是自由软件, 这意味着它不仅开放源代码, 而且还可以使用。 由于它使用C 语言作为其开发语言, 而C 语言是跨平台的, 因此GTK+几乎可以在任何操作系统上使用, 基于这些原因,GTK+拥有为数众多的拥护者[2].
1 点菜系统的总体结构及介绍
文中所介绍的点菜系统, 主要分为客户端、通讯过程、服务器端三部分, 而通讯过程主要是连接客户端与服务器端的[3]. 在客户端采用移动式的ARM11(S3C6410), 主要用户为顾客自己, 而不需要服务员, 客户端的开发环境为嵌入式linux, 采用GTK+函数库构建界面, 在服务器端主要设备为PC 机, 它的主要用户是餐厅的管理人员, 管理人员可以通过服务器修改、添加、删除菜单, 开发环境为linux 系统。 而数据的传输过程是采用服务器通过路由器802.11 协议连接各个客户端, 进而可以实现多个客户端对应一个服务器, 并且可以实现双向通信, 客户端菜单的显示是通过无线传输调用服务器端的数据库里的数据, 数据库(SQLite)设在服务器方便餐厅管理者对菜单的修改。 点菜系统界面流程图设计如下:

图1 系统结构
2 客户端硬件设计
点菜终端是连接客户与餐厅菜单的重要部分, 我们采用ARM11 来实现触屏、数据切换、数据传输、数据的识别等功能, 并且我们对功耗低、体积小、辐射小等要求皆满足, 因此在这里选用飞凌OK6410 的ARM11 开发板,和7 寸液晶触摸屏组成。
ARM11 为便携式和无线应用提供了从未有过的高超性能, ARM11 的微架构保证了系统性能可以从基本的350-500MHz 范围扩展到终的1GHz 以上, , 可广泛应用于移动电话和通用处理领域, OK6410 的软件系统支持LINUX2.6.28, 提供标准级支持包(BSP)并开放源代码, 终端硬件结构框图NAND FLASH 存储器主要用于存放内核代码、应用程序、文件系统和数据资料, 型号为K9G8G08U0A. DDR 存储器使用两片SamsungK4X51163PC芯片, DDR数据传输总线频率可达266MHz. OK6410 开发板设计有4 路串口, 包括1个五线RS-232 电平串口(DB9 母座)和3 个三线TTL电平串口, 其中UART0 默认为调试串口, 可以直接与PC 机相连。 USB OTG 接口支持2.0 协议, 采用MiniUSBA/B 型号接口, 运行速度可达480Mbps.
JTAG 接口用来访问ARM11 内核或片内设备, 使用四线SD 卡接口, 支持SD Memory 规格2.0 协议。 WIFI接口可以通过连接开发板配套的WIFI 模块, 来实现WIFI 上网功能。

图2 硬件结构。
3 无线路由器的选择
为了应对餐厅内多个顾客同时利用无线网络的时刻, 因此需要选择一款功能强大的无线路由器。 D-link支持802.11N 协议, 支持UpnP, DDNS 和WPS PBC 和PIN、流量控制、IP/MAC 绑定、时间计划、在线固件升级, 具有无盲点的全面覆盖、难以置信的速度、强有力的保护等作用, D-link 使用了先进的11N无线联网技术, 有效传送数据速率的倍增, 比一般强达5 倍的信号, 能扩大覆盖范围, 传输速率可达300Mbps。
4 嵌入式Linux系统下GTK+的移植
由于Linux 系统有多个版本, 每个不同的CPU体系结构各有不同, Linux 的优点就是开放源代码, 所以我们可以根据设计的具体要求借用移植成功的GTK+用到自己的系统上, 对各个步骤进行修改。
4.1 移植的大致过程如下
(1) 准备工作: 硬件环境: PC 机一台并在windows下安装vmware 虚拟机, 虚拟一个Linux 系统, 嵌入式开发板、带触屏的液晶屏及相关链接电缆。 软件环境:
安装好GCC 及相关软件、交叉编译器、开发套件的全部源码包。
(2) 安装各个源码包, 并且见源码包安装在一个目录下。
(3) 在开发板上编译UBOOT 和Linux 内核做好运行环境, 采用nfs 加载文件系统。
(4) 交叉编译自己的程序, 放到开发板上运行。

图3 移植过程。
4.2 系统的原理、过程
原理: 建立一个局域网利用无线传输协议(802.11N), 经过无线路由器将数据从客户端到服务器且从服务器到客户端传输的双向通信。
过程: 客户端通过发送信号经无线传输由无线路由器转发到服务器接受端, 由服务器分析数据, 信号经过处理后客户端就可以调用数据库中的数据, 显示在液晶屏上, 并且服务器可以向客户端发送确认信息。
4.3 系统界面的设计
客户端与服务器端都是由GTK+函数库来设计的。
4.3.1 界面框架的构建
(1) 窗口创建: 用gtk_window_new()函数创建一个窗口框架,然后根据自己的需要用gtk_window_ set_title()设置窗口的标题、大小等, GTK+开发包是基于事件驱动的, 当程序调用gtk_main()函数后, 将一直在其中等待事件发生所产生的信号, 并根据信号做出系统相应的反应。
(2) 菜单结构的添加: 在GTK+中, 将菜单分为3 部分菜单栏、菜单项、和菜单, 分别用GtkMenuBar、GtkMenuItem 和GtkMenu 来表述, 菜单栏(GtkMenuBar)是一个容器构建, 用于在应用程序的窗口或对话框中显示和管理菜单, 菜单项(GtkMenuItem)定义了菜单项的外观和单击后的行为, 菜单(GtkMenu)用于容纳具体的菜单项[4]. 菜单项的创建用gtk_menu_ item_new()函数来创建, 在创建完菜单项后, 需要调用gtk_menu_shell_append()函数将创建的菜单添加到菜单中。
(3) 按钮构件的设置: 对控件位置的控制主要有组装盒(GtkBox)、表格构件(GtkTable)、固定容器构件(GtkFixed)、布局容器构件(GtkLayout),利用gtk_button_new_with_label()函数创建按钮, gtk_contain_add()将创建的按钮添加到窗口上。
(4) 在GTK+中主要的优势是回调函数的应用, 不同的构件触发的信号可能不同但都是用g_signal_connect()函数来调用回调函数, 进而对其调用的函数进行再处理。
设计的点菜界面如下所示:

图4 点菜界面。

图5 菜单的图片介绍。
5 测试结果

图6 菜单信息发送过来

图7 菜单信息接收。
服务器端的界面设计和客户端的类似, 经过测试顾客能够将客户端的信息经过无线路由器传送到管理者的服务器端。 图6、图7 所示为服务器端的界面, 客户端将选定好的菜单发送过来对应的桌号颜色就会变化, 单击一下信息就会显示在编辑栏中, 并且客户可以发送自己的要求信息给餐厅管理者。
6 结语
很好体现了该设计的特色, 综合了点菜、娱乐于一体的点菜系统, 采用移植性且界面视觉好的GTK+进行人机界面的开发, 较好地适合现在电子发展的时代, GTK+使用基本的语言(C 语言)进行的开发从而能够使更多的人员来开发使用它, 该界面汉化显示,操作方便, 开发费用低能够节省成本, 该系统具有良好的实用价值, 具有巨大的开发空间。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。