基于ARM的嵌入式电子点菜系统的设计与实现

2010-05-09 06:00杨晓东糜元根
网络安全技术与应用 2010年8期
关键词:点菜服务器端内核

杨晓东 糜元根

南京工业大学电子与信息工程学院 江苏 210009

0 引言

近年来,随着我国人民生活水平的提高和生活方式的转变,餐饮业得以迅速发展。然而,在竞争愈演愈烈的今天,信息科技在各行各业广泛应用的时候,餐饮业却一直徘徊在信息科技的边缘地域。

据悉,我国现有各类饭店、餐馆近400多万家,年营业额超过7300亿元人民币,并保持着高达15%~17%的年增长率。不容忽视的是,在这些众多的餐馆中,上规模的却不多,更多的只是街头小店。

越来越多的餐饮业管理者达成了一种共识:传统的由人工来传递菜单的点菜方式已经不能满足市场的需求。不仅浪费时间、效率低下,而且很容易出现错误,从而大大降低服务质量,给企业带来不必要的损失。

针对上述问题,本文介绍了一种全新的电子点菜系统。该系统的使用将大大降低人力资源成本,解决了传统点菜方式的弊端,从而有效的提高了餐饮机构的服务质量和工作效率,也同时实现了餐饮业利润的最大化。

1 系统的硬件设计

1.1 终端系统的框架图

本系统采用博芯公司基于ARM7的SEP4020处理器,开发板上带有以太网芯片,SD卡,UART接口等外设。整个系统的界面用北京飞漫公司的MiniGUI1.3来设计,系统采用最新的Linux2.6内核。如图1所示。

图1 终端系统的框架图

1.2 主芯片SEP4020

SEP4020是由南京东南大学国家专用集成电路系统工程技术研究中心设计,使用0.18um标准CMOS的工艺设计,内嵌ASIX CORE(32位RISC内核,兼容ARM720T,带8KB指令数据Cache和全功能MMU),采用冯诺依曼结构,SEP4020芯片中集成各种功能包括:8/16位SRAM/NOR FLASH接口,16位SDRAM接口,硬件NAND FLASH控制器(支持NAND FLASH自启动),10M/100M自适应以太网MAC(支持RMII接口),64K Byte高速片上SRAM,USB1.1 Device(全速12Mbps,支持I2S 音频接口,支持MMC/SD卡),LCD控制器(支持640*480*16 位TFT 彩屏和STN黑白、灰度屏),RTC(支持日历功能/WatchDog,支持后备电源),10通道TIMER(支持捕获、外部时钟驱动和MATCH OUT),4通道PWM(支持高速GPIO),4通道UART(均支持红外),2通道SSI(支持SPI和Microwire协议),2通道SmartCard接口(兼容ISO7816协议,支持最多97个GPIO),14个外部中断(支持外部DMA传输),片上DPL(支持多种功耗模式,IDLE、SLOW、NORMAL、SLEEP)。SEP4020提供全面的、通用的片上外设,大大减少了系统电路中除处理器以外的元器件配置,从而最小化系统成本,符合嵌入式的要求。

2 系统功能

本系统包括六大功能模块:订位、冷菜、热菜、菜单查询、顾客结账、退出。顾客可以根据界面上的按钮对各功能进行操作。

3 实现原理

3.1 MiniGUI图形界面应用程序开发技术

为了与用户有很好的交互性,需要设计图形界面便于用户操作。常见的图形界面设计方法是QT和MiniGUI,综合考虑了系统的硬件,采用飞漫公司的MiniGUI进行图形界面设计。

MiniGUI编译成两个截然不同的版本,一个是MiniGUIThreads,一个是MiniGUI-Lite。MiniGUI-Threads适合于多窗口、实时性要求很高的系统,比如工业控制系统;而MiniGUI-Lite适合于功能丰富、结构复杂系统,比如PDA等信息产品。而且MiniGUI-Threads可以通过MiniGUI的消息函数,可在不同的线程之间传递消息,相比较而言,本系统采用前者。

3.1.1 事件驱动和消息机制

MiniGUI是一个基于事件驱动的图形用户界面支持系统,用户程序的流程不再是只有一个入口和若干个出口的串行执行线路;相反,程序会一直处于一个循环状态,在这个循环当中,程序从外部输入设备获取某些事件,比如用户的按键或者鼠标的移动,然后根据这些事件作出某种的响应,并完成一定的功能,这个循环直到程序接受到某个消息为止。

3.1.2 窗口过程

窗口是MiniGUI当中最基本的GUI元素,一旦窗口建立之后,窗口就会从消息队列当中获取属于自己的消息,然后交由它的窗口过程进行处理。窗口过程函数主要是对属于该窗体的不同消息进行相应的处理。窗口过程函数通常使用switch语句来对各种消息(message)进行处理。

3.2 Socket网络编程技术

当前,Socket接口是TCP/IP网络最为通用的API,也是在Internet上进行应用开发最为通用的API。它是介于应用层和传输层之间的编程接口,它提供了访问下层通信协议的大量系统调用和相应的数据结构功能。在Linux系统中,Socket是应用程序访问下层网络协议的惟一方法。具体地讲,Socket在用户级实现了两个应用程序之间的网络连接和数据交换,所以Linux中的Socket意味着网络上的通信。

我们在做网络传输数据功能时,采用了客户端/服务器(C/S)网络通信:服务器端守护进程不断的监听、等待连接;客户端向远程服务器发送连接请求,服务器端收到请求后,按照一定的规则建立连接,连接完成后,两个程序之间就建立了一个虚拟的数据通信链路。这些程序可以直接从自己打开的套接口读入和写出数据,而不用关心实际的数据链路。具体实现过程见图2。

图2 Socket通信

3.3 SQLite技术

SQLite是2000年开发出来的一种小型嵌入式数据库。它是一个小型的C语言链接库,这个链接库本身就完全包含数据库引擎的功能,可以方便地运用于嵌入式系统中。SQLite提供了对SQL92的大多数支持,支持多表、索引、事务、视图和触发等一系列用户接口以及驱动。简单易用,速度也相当快,同时提供了丰富的数据库接口。这个库具有很强的内聚性,通过不到25000行的ANSIC代码实现,而且它的源代码完全开放,可以自由地应用于任何领域。

在与MiniGui的连接中,SQLite的API极其易使用,完全可以对嵌入式数据库进行基本的操作,如建立表格、查询、修改、插入、删除、排序等,只需要三个用来执行SQL和获取数据的函数。此外它还是可以扩展的,允许自定义函数,然后以Callback(回调函数)的形式传递进去。

我们在使用MiniGui连接并操作SQLite时,主要经历了三个步骤:

(1)提供文件和访问模式来调用sqlite3_open()连接数据库,这个函数参数有两个,一个是需要打开的数据库文件名(UTF-8格式),另一个用于返回数据库句柄。

(2)SQLite通过执行Callback函数返回从数据库得到的结果,不过有时候,在进行select查询时,我们想要非回调的select查询结果时,通过sqlite3_get_table()来实现,它会以一个一维数组的形式返回我们查询的值。

(3)调用sqlite3_exec()执行,将SQL查询语句和Callback函数的指针作为函数参数传入,使用完关闭数据库sqlite3_close()。

4 系统软件设计

4.1 软件流程设计

如图3所示,开发板UB4020MB上电后,从NorFlash中读取Uboot程序,然后初始化部分硬件,再运行内核Linux Kernel,接着运行文件系统,最后再加载部分驱动,有的驱动在加载内核时加载了。这是开发板的系统已经启动过程。系统启动后,可以运行点菜系统的主程序,出现主界面,用户可以通过点击按钮选择相应的功能。

图3 程序流程图

4.2 服务器端流程设计

数据库服务器端采用Fedora 7作为服务器操作系统,sqlite3作为数据库,系统启动后自动运行守护进程,这包括:建立套接字、绑定地址、开始监听并等待客户端的连接,收到数据后更新本地数据库,并将操作记录写入设定好的日志文件中,循环执行以上过程。具体流程见图4。

5 系统移植与测试

在PC机上安装vmware虚拟机,在虚拟机中再安装Fedora7系统。为了能够方便重复调试,故采用NTF文件系统,确保内核支持NTF。并且安装交叉编译器cross-3.4.1.tar.gz。

6 总结与展望

嵌入式技术是与实践紧密相结合的一门技术,把我们学的知识理论通过实验应用到实践中去,这样我们才能真正掌握它们,并能运用它们。这个点菜系统的开发,让我们掌握了硬件设计、Bootloader、嵌入式Linux操作系统编译、linux驱动开发、嵌入式数据库和MiniGUI图形界面开发等。

图4 服务器端流程设计

本文的点菜系统除了应用于学校的食堂,还可以应用于饭店,具有很好的市场前景。系统还存在着一些不足,没有加上无线网卡,在以后的实验开发中会将无线加入到系统中。

[1]刘国文.餐饮业要重视信息化建设[J].烹调知识.2005.

[2]韩超.嵌入式GUI开发设计—基于MiniGUI[M].北京:电子工业出版社.2009.

[3]王琳,余震虹,李鑫等.基于ARM的嵌入式电子点菜系统的设计[J].微计算机信息.2009.

[4]孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社.2007.

[5]Daniel W.Lewis.Fundamentals of embedded software[M].北京:高等教育出版社.2004.

[6]SQLite Home Page.http://www.sqlite.org.

猜你喜欢
点菜服务器端内核
多内核操作系统综述①
点菜
会点菜的人,混得不会太差
强化『高新』内核 打造农业『硅谷』
Linux环境下基于Socket的数据传输软件设计
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
疯狂编辑部之点菜风波
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计