洪俊民(廈門萬佳通科技有限公司,福建 廈門 361006)
網絡訂餐系統(tǒng)中無線微型打印終端的研發(fā)
洪俊民
(廈門萬佳通科技有限公司,福建廈門361006)
摘要:本文介紹了一種基于GPRS網絡通信,可以打印票據的微型打印終端,該終端結合了網絡訂餐的應用,用于幫助餐館快速處理網絡訂單。本文首先介紹了打印終端的總體設計思路,接著進一步介紹了其硬件和軟件的設計,最后給出總結。
關鍵詞:GSM;GPRS;網絡訂餐;微型打印
隨著網絡的普及,以及網絡速度的提升,越來越多的人漸漸習慣于通過網絡辦事,網上聊天、網上購物等已經廣泛流行,而網上訂餐的方式也開始被生活節(jié)奏快的上班族所青睞。在網上選好菜品并下單,然后由餐館備餐,最后送貨上門,大大節(jié)省了許多時間,用餐的人不用再像以往那樣跑到餐館去點餐并等待餐館備餐,而餐館也可以提前處理訂餐,增加了每天的銷量。
網上訂餐基本上是通過使用電腦或手機等可上網設備實現的,餐館在網上提供了直觀的網頁,訂餐的人通過網頁可快速完成點餐,因此,網上訂餐是相當方便快捷的,但對于餐館來說,如何快速簡單的處理訂單,卻是一個大問題,以往,餐館需要準備一臺電腦和一臺打印機,但由于電腦的環(huán)境適應性較差,難以用在油煙較多、濕氣較重的廚房,而且電腦還需要專門人員維護,因而無法幫助餐館實現經濟實用而又穩(wěn)定可靠的訂單處理。
無線微型打印終端就是為了解決這些諸多弊端而進行研發(fā)的,該產品采用GSM模塊,結合熱敏打印模塊,相當于集成了電腦和打印機,該產品體積小,并且是通過GPRS網絡讀取訂單,無需連接網線,因此餐館可以任意移動擺放該產品,并可用于廚房,由廚師直接處理票據,而且本產品還設計了一種簡單的訂單處理流程,因而可以提升餐館處理訂單的速度,并且使用簡單快捷,適用性強。
網絡訂餐系統(tǒng)主要由兩部分組成:訂餐下單和訂單處理;首先是由用戶使用電腦或手機打開餐館的網站,并在網站上選擇需要的餐類,當用戶確認選擇后并用網銀或其他支付方式支付費用后,即完成了訂餐下單,此時,該訂單即被存儲在網絡服務器的數據庫中,當餐館開啟無線微型打印終端機后,該終端機自動通過GPRS網絡,使用http協(xié)議與網絡服務器通信,網絡服務器查詢數據庫后,把訂單內容發(fā)送給終端機,該終端機按一定的票據格式打印出訂單內容,并播放音樂提示餐館人員確認,餐館人員查看訂單內容后,如無問題,則按終端機上的確認鍵確認,但如若餐館無法實現客戶的要求或其他原因,則餐館人員需要按終端機上的取消鍵,并選擇預先設置的取消理由,比如“缺貨”,該終端機將把這些信息發(fā)送給服務器,服務器收到后即時顯示這些信息給訂餐用戶。
整個操作流程中,餐館人員只需確認票據信息,并簡單按鍵即可完成訂單處理,因此操作簡單快捷,不占用太多餐館人員的時間,即使是忙碌的廚師都可以處理。
無線微型打印終端主要包括GSM模塊、LCD顯示、熱敏打印、鍵盤等部分。
2.1GSM模塊
GSM模塊采用的是SIMCOM的SIM840W模塊,該模塊集成了GSM標準功能,包括撥打/接聽電話、短信收發(fā)和GPRS網絡通信等功能,更重要的一點是,SIM840W模塊提供了SDK,允許二次開發(fā),其獨創(chuàng)的EAT接口,使開發(fā)人員可以像使用單片機一樣開發(fā)該模塊。
使用SIM840W模塊可以免去開發(fā)人員外接單片機,其自帶的豐富資源又是單片機無法比擬的,SIM840W是由一顆32位、頻率為104MHz的ARM芯片,以及2.5兆字節(jié)的程序空間和2兆多字節(jié)的內存組成的,開發(fā)人員可以定義簡單幾個程序線程,使程序開發(fā)像單片機一樣簡單,而EAT接口又使開發(fā)人員可以直接用某個函數發(fā)送標準的AT指令,因而豐富了模塊功能。
2.2LCD顯示
本終端的顯示采用點陣液晶驅動芯片ST7565實現,該芯片最大支持132*65點的LCD顯示(本終端只用到其中的128*64點),具有并行和串行兩種接口[1],出于節(jié)省I/O口的考慮,我們采用串行接口,但為了提高串行驅動速度,我們用SIM840W的SPI口來驅動ST7565芯片。
2.3熱敏打印模塊
票據的打印是由熱敏頭對熱敏紙加熱,并由馬達驅動走紙完成的,其原理類似lcd的顯示,熱敏頭的加熱點數為384,也就是一行最多可以加熱384個點,打印時,把要打印的內容所對應的點的位置設置為加熱狀態(tài),當加熱到一定時間后,即控制馬達轉動走紙,馬達使用恒定電流斷路器的方式進紙,馬達驅動信號的每兩步之間的精度為0.0625mm,(相當于一個點的精度),在打印過程中應當根據實際的工作條件例如電壓、溫度、實際打印點數等參數來調整馬達的驅動頻率。
2.4鍵盤
由于GSM模塊自帶有鍵盤掃描的GPIO口,因此對應鍵盤的設計就非常簡單,我們采用的是井字型掃描方式,當有按鍵按下時,在程序中,將會收到按鍵事件通知,調用API函數即可讀到按鍵的物理鍵值。
軟件的開發(fā)是在SIM840W上進行的,該模塊提供了EMBEDDEDAT(簡稱EAT)接口,主要用于客戶對SIM840W進行二次開發(fā),SIMCom提供相關的API函數,資源及運行環(huán)境,客戶app程序運行在SIM840W內部。這樣可以不再需要外部MCU,節(jié)省成本。EAT主要功能包括標準的AT命令,如TCPIP連接功能,打電話功能以及發(fā)短信等相關功能。所提供的API包括事件獲取API,文件系統(tǒng)操作,timer的控制,周圍設備的API,及一些常用的系統(tǒng)API等。
我們的軟件設計就是根據EAT的特性進行設計的,主要包括主程序,功能模塊程序和驅動部分。
3.1主程序
EAT平臺提供多線程功能,目前支持1個主線程和最多8個子線程,主線程用于和系統(tǒng)通信,如接收系統(tǒng)事件,本終端的主程序正是在主線程上運行的。
(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為主程序,負責接收系統(tǒng)(core)的消息,并調度運行各個功能模塊,優(yōu)先級最高,相比其他8個線程,啟動時間最早。EatEntry_st中的值不是0xFFFFFFFF,則該入口會被調用,同時系統(tǒng)分配相關的信息。App_user1,app_user2…app_user8是用戶可使用的其他8個線程,優(yōu)先級依次降低,即app_ main>app_user1>...>app_user8。
app_main示例代碼:
voidapp_main(void*data)
{
RAM初始化
while(1)
{
獲取事件
事件處理
調度功能模塊
……
}
}
3.2功能模塊
程序中的各個獨立功能都是以模塊的方式封裝的,并由主程序調度,主程序根據信號的傳遞調用相應的模塊,比如,根據某個定時信號調用響應該信號的功能模塊運行。每個功能模塊都必須響應啟動信號和停止信號,當程序調用afshLoadHandler并帶有模塊函數名稱后,即啟動了該功能模塊。功能模塊的生命周期是從啟動信號開始,到結束信號前。在該終端的各個功能模塊中,最重要的兩個功能模塊是:后臺訂單接收模塊和訂單處理模塊;
(1)訂單接收模塊
該模塊啟動一個定時器,在設定的時間到來時,開始連接網絡服務器,并查詢是否有訂單,如果沒有訂單,則等到下一個定時時間到來時再重復查詢,如果查詢到服務器有訂單,則讀取訂單,并以信號方式把訂單發(fā)送給訂單處理模塊處理;
(2)訂單處理模塊
當有訂單信號發(fā)送時,該模塊即被調用,該模塊調用后,開始解析訂單格式,并按一定格式打印,然后響鈴并等待用戶確認,用戶根據打印的票據決定是否接收該訂單,在用戶按確認或拒絕等相關操作后,該模塊將把相應信息發(fā)送給服務器,信息中帶有該訂單的編碼,因此服務器可以確認是哪條訂單被處理了。
3.3驅動
本終端采用代碼分層的設計,把與硬件相關部分的代碼與上層應用分開,硬件相關代碼即為驅動部分,屬于代碼中的底層部分;驅動包括Lcd驅動、打印驅動、按鍵驅動、音頻驅動和IO口控制驅動等部分,驅動部分為上層提供了一些標準接口函數,方便上層調用,使上層代碼不需要關心底層的控制,因此也方便了外圍硬件的更換,比如,更換外殼導致按鍵有所變化時,只要修改驅動代碼即可,上層不需做任何修改。所有驅動函數名統(tǒng)一以“Drv_”作為前綴,如打印驅動函數有開啟打印控制Drv_PrnOpen,關閉打印控制Drv_PrnClose等。
隨著網絡應用的更加普及,配合網絡應用的終端產品也將不斷的涌現,本終端是配合網絡訂餐應用的產品,方便餐館處理網絡訂餐,本終端也可以在不修改硬件的前提下,對軟件功能模塊進行修改,即可適用于不同場合,比如,網上訂票、網上購物等。
參考文獻
[1]ST756565x132DotMatrixLCD Controller/Driver.SitronixInc.
[2]Simcom.SIM800_EmbeddedAT開發(fā)指導.http://www.sim.com2013.
中圖分類號:TP311
文獻標識碼:A