APP下载

网络订餐系统中无线微型打印终端的研发

2015-12-23洪俊民厦门万佳通科技有限公司福建厦门361006

中国新技术新产品 2015年15期

洪俊民(厦门万佳通科技有限公司,福建 厦门 361006)

网络订餐系统中无线微型打印终端的研发

洪俊民
(厦门万佳通科技有限公司,福建厦门361006)

摘要:本文介绍了一种基于GPRS网络通信,可以打印票据的微型打印终端,该终端结合了网络订餐的应用,用于帮助餐馆快速处理网络订单。本文首先介绍了打印终端的总体设计思路,接着进一步介绍了其硬件和软件的设计,最后给出总结。

关键词:GSM;GPRS;网络订餐;微型打印

随着网络的普及,以及网络速度的提升,越来越多的人渐渐习惯于通过网络办事,网上聊天、网上购物等已经广泛流行,而网上订餐的方式也开始被生活节奏快的上班族所青睐。在网上选好菜品并下单,然后由餐馆备餐,最后送货上门,大大节省了许多时间,用餐的人不用再像以往那样跑到餐馆去点餐并等待餐馆备餐,而餐馆也可以提前处理订餐,增加了每天的销量。

网上订餐基本上是通过使用电脑或手机等可上网设备实现的,餐馆在网上提供了直观的网页,订餐的人通过网页可快速完成点餐,因此,网上订餐是相当方便快捷的,但对于餐馆来说,如何快速简单的处理订单,却是一个大问题,以往,餐馆需要准备一台电脑和一台打印机,但由于电脑的环境适应性较差,难以用在油烟较多、湿气较重的厨房,而且电脑还需要专门人员维护,因而无法帮助餐馆实现经济实用而又稳定可靠的订单处理。

无线微型打印终端就是为了解决这些诸多弊端而进行研发的,该产品采用GSM模块,结合热敏打印模块,相当于集成了电脑和打印机,该产品体积小,并且是通过GPRS网络读取订单,无需连接网线,因此餐馆可以任意移动摆放该产品,并可用于厨房,由厨师直接处理票据,而且本产品还设计了一种简单的订单处理流程,因而可以提升餐馆处理订单的速度,并且使用简单快捷,适用性强。

1 总体设计思路

网络订餐系统主要由两部分组成:订餐下单和订单处理;首先是由用户使用电脑或手机打开餐馆的网站,并在网站上选择需要的餐类,当用户确认选择后并用网银或其他支付方式支付费用后,即完成了订餐下单,此时,该订单即被存储在网络服务器的数据库中,当餐馆开启无线微型打印终端机后,该终端机自动通过GPRS网络,使用http协议与网络服务器通信,网络服务器查询数据库后,把订单内容发送给终端机,该终端机按一定的票据格式打印出订单内容,并播放音乐提示餐馆人员确认,餐馆人员查看订单内容后,如无问题,则按终端机上的确认键确认,但如若餐馆无法实现客户的要求或其他原因,则餐馆人员需要按终端机上的取消键,并选择预先设置的取消理由,比如“缺货”,该终端机将把这些信息发送给服务器,服务器收到后即时显示这些信息给订餐用户。

整个操作流程中,餐馆人员只需确认票据信息,并简单按键即可完成订单处理,因此操作简单快捷,不占用太多餐馆人员的时间,即使是忙碌的厨师都可以处理。

2 硬件设计

无线微型打印终端主要包括GSM模块、LCD显示、热敏打印、键盘等部分。

2.1GSM模块

GSM模块采用的是SIMCOM的SIM840W模块,该模块集成了GSM标准功能,包括拨打/接听电话、短信收发和GPRS网络通信等功能,更重要的一点是,SIM840W模块提供了SDK,允许二次开发,其独创的EAT接口,使开发人员可以像使用单片机一样开发该模块。

使用SIM840W模块可以免去开发人员外接单片机,其自带的丰富资源又是单片机无法比拟的,SIM840W是由一颗32位、频率为104MHz的ARM芯片,以及2.5兆字节的程序空间和2兆多字节的内存组成的,开发人员可以定义简单几个程序线程,使程序开发像单片机一样简单,而EAT接口又使开发人员可以直接用某个函数发送标准的AT指令,因而丰富了模块功能。

2.2LCD显示

本终端的显示采用点阵液晶驱动芯片ST7565实现,该芯片最大支持132*65点的LCD显示(本终端只用到其中的128*64点),具有并行和串行两种接口[1],出于节省I/O口的考虑,我们采用串行接口,但为了提高串行驱动速度,我们用SIM840W的SPI口来驱动ST7565芯片。

2.3热敏打印模块

票据的打印是由热敏头对热敏纸加热,并由马达驱动走纸完成的,其原理类似lcd的显示,热敏头的加热点数为384,也就是一行最多可以加热384个点,打印时,把要打印的内容所对应的点的位置设置为加热状态,当加热到一定时间后,即控制马达转动走纸,马达使用恒定电流断路器的方式进纸,马达驱动信号的每两步之间的精度为0.0625mm,(相当于一个点的精度),在打印过程中应当根据实际的工作条件例如电压、温度、实际打印点数等参数来调整马达的驱动频率。

2.4键盘

由于GSM模块自带有键盘扫描的GPIO口,因此对应键盘的设计就非常简单,我们采用的是井字型扫描方式,当有按键按下时,在程序中,将会收到按键事件通知,调用API函数即可读到按键的物理键值。

3 软件设计

软件的开发是在SIM840W上进行的,该模块提供了EMBEDDEDAT(简称EAT)接口,主要用于客户对SIM840W进行二次开发,SIMCom提供相关的API函数,资源及运行环境,客户app程序运行在SIM840W内部。这样可以不再需要外部MCU,节省成本。EAT主要功能包括标准的AT命令,如TCPIP连接功能,打电话功能以及发短信等相关功能。所提供的API包括事件获取API,文件系统操作,timer的控制,周围设备的API,及一些常用的系统API等。

我们的软件设计就是根据EAT的特性进行设计的,主要包括主程序,功能模块程序和驱动部分。

3.1主程序

EAT平台提供多线程功能,目前支持1个主线程和最多8个子线程,主线程用于和系统通信,如接收系统事件,本终端的主程序正是在主线程上运行的。

(1)主程序main.c中对应的结构体

#pragmaarmsectionrodata=“APP_ CFG”

#pragmaarmsectionrodata

#pragmaarmsectionrodata= ”APPENTRY”

constEatEntry_stAppEntry=

{

app_main,

app_func_ext1,

(app_user_func)EAT_NULL,// app_user1,

……

(app_user_func)EAT_NULL,//app_ user8,

};

#pragmaarmsectionrodata

(2)具体说明

app_main为主程序,负责接收系统(core)的消息,并调度运行各个功能模块,优先级最高,相比其他8个线程,启动时间最早。EatEntry_st中的值不是0xFFFFFFFF,则该入口会被调用,同时系统分配相关的信息。App_user1,app_user2…app_user8是用户可使用的其他8个线程,优先级依次降低,即app_ main>app_user1>...>app_user8。

app_main示例代码:

voidapp_main(void*data)

{

RAM初始化

while(1)

{

获取事件

事件处理

调度功能模块

……

}

}

3.2功能模块

程序中的各个独立功能都是以模块的方式封装的,并由主程序调度,主程序根据信号的传递调用相应的模块,比如,根据某个定时信号调用响应该信号的功能模块运行。每个功能模块都必须响应启动信号和停止信号,当程序调用afshLoadHandler并带有模块函数名称后,即启动了该功能模块。功能模块的生命周期是从启动信号开始,到结束信号前。在该终端的各个功能模块中,最重要的两个功能模块是:后台订单接收模块和订单处理模块;

(1)订单接收模块

该模块启动一个定时器,在设定的时间到来时,开始连接网络服务器,并查询是否有订单,如果没有订单,则等到下一个定时时间到来时再重复查询,如果查询到服务器有订单,则读取订单,并以信号方式把订单发送给订单处理模块处理;

(2)订单处理模块

当有订单信号发送时,该模块即被调用,该模块调用后,开始解析订单格式,并按一定格式打印,然后响铃并等待用户确认,用户根据打印的票据决定是否接收该订单,在用户按确认或拒绝等相关操作后,该模块将把相应信息发送给服务器,信息中带有该订单的编码,因此服务器可以确认是哪条订单被处理了。

3.3驱动

本终端采用代码分层的设计,把与硬件相关部分的代码与上层应用分开,硬件相关代码即为驱动部分,属于代码中的底层部分;驱动包括Lcd驱动、打印驱动、按键驱动、音频驱动和IO口控制驱动等部分,驱动部分为上层提供了一些标准接口函数,方便上层调用,使上层代码不需要关心底层的控制,因此也方便了外围硬件的更换,比如,更换外壳导致按键有所变化时,只要修改驱动代码即可,上层不需做任何修改。所有驱动函数名统一以“Drv_”作为前缀,如打印驱动函数有开启打印控制Drv_PrnOpen,关闭打印控制Drv_PrnClose等。

结语

随着网络应用的更加普及,配合网络应用的终端产品也将不断的涌现,本终端是配合网络订餐应用的产品,方便餐馆处理网络订餐,本终端也可以在不修改硬件的前提下,对软件功能模块进行修改,即可适用于不同场合,比如,网上订票、网上购物等。

参考文献

[1]ST756565x132DotMatrixLCD Controller/Driver.SitronixInc.

[2]Simcom.SIM800_EmbeddedAT开发指导.http://www.sim.com2013.

中图分类号:TP311

文献标识码:A