唐建祥 廖根興
摘要:企業(yè)單位食堂每餐做多少量較難控制,為了避免浪費和方便輸出統(tǒng)計報表,本文設(shè)計開發(fā)了一套微信點餐系統(tǒng)。
關(guān)鍵詞:微信訂餐;讀卡器;以太網(wǎng)通信;串口屏;通信協(xié)議
中圖分類號:TP311.56 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2019)08-0133-01
0 引言
在一些大型的企業(yè)、事業(yè)單位中,每天工作餐的就餐人數(shù)不固定,且變化較大,如何避免飯菜做多導(dǎo)致食材的浪費是一些企業(yè)必須要考慮的問題。根據(jù)企業(yè)的需求,設(shè)計了一套應(yīng)用在企事業(yè)單位食堂中的微信點餐系統(tǒng),本文著重介紹微信點餐系統(tǒng)中下位機的設(shè)計與實現(xiàn)方法。
1 微信訂餐系統(tǒng)下位機的設(shè)計
下位機硬件系統(tǒng)主要由主控系統(tǒng)、讀卡器電路、以太網(wǎng)通信電路、RS485雙串口屏屏顯示電路組成,如圖1所示。所有的硬件電路都放在下位機的機殼當(dāng)中,兩個7寸的全彩顯示屏分別位于刷卡機的兩側(cè),方便食堂工作人員和就餐人員查看信息。下位機的實物圖如圖2所示。
1.1 主控MCU及所實現(xiàn)的功能
主控MCU選擇ATmega2560單片機。該單片機運行在16M的頻率下有16MIPS的處理速度;多達(dá)四個串行通信端口,能滿足系統(tǒng)對多串口的設(shè)計需求;單片機內(nèi)部256KB的程序存儲器能夠滿足存儲大量圖表、圖片信息,能夠滿足系統(tǒng)的設(shè)計要求。單片機的主要功能是實現(xiàn)整體控制。主程序中首先對單片機寄存器進(jìn)行初始化操作,隨即對串口屏進(jìn)行初始化操作。單片機轉(zhuǎn)入等待讀取卡號環(huán)節(jié),當(dāng)讀到有效卡號則通過以太網(wǎng)口把卡號發(fā)到上位機。單片機馬上處于接收狀態(tài),用于接收以太網(wǎng)發(fā)回來的信息,并對接收到的合法信息進(jìn)行分析[1]。
1.2 讀卡器與讀卡程序的實現(xiàn)
讀卡器的作用是實時讀取放置在下位機頂端的射頻卡的信息,并經(jīng)過單片機軟件處理得到真實的卡號,該卡號與企業(yè)財務(wù)系統(tǒng)中的卡號相吻合。讀卡器選用通用性強、穩(wěn)定性強的讀卡器,具有體積小、靈敏度高的特點,能夠方便地嵌入到下位機的機殼內(nèi)。由單片機的UART3串口對讀卡器進(jìn)行讀寫操作。讀卡器的電平是RS232,因此單片機的TTL電平通過MAX232芯片進(jìn)行電平轉(zhuǎn)換后與讀卡器相連。操作單片機的UART3即可以方便地進(jìn)行讀卡的操作。單片機與讀卡器的通信比特率設(shè)定在9600bPS。設(shè)定單片機的UART3工作在中斷狀態(tài)下,中斷服務(wù)函數(shù)把接收到的12個字節(jié)的數(shù)據(jù)存入數(shù)組并把讀卡標(biāo)志位置“1”。主程序查詢到讀卡標(biāo)志位為“1”時進(jìn)入提取卡號環(huán)節(jié),程序判斷幀頭、幀尾的的標(biāo)志性數(shù)據(jù)是否合法,如果合法則顯示“讀卡成功”,并把卡號發(fā)給上位機,否則顯示“讀卡失敗”,等待下一次刷卡。
1.3 串口顯示屏與驅(qū)動程序
顯示屏的作用是實時顯示就餐者的姓名、工號、所點菜品、菜品金額、卡余額等信息,方便就餐者和工作人員進(jìn)行信息的查看。下位機的顯示屏選用兩個帶組態(tài)的全彩7寸串口屏,分辨率為800×480像素,支持最大64×64像素的漢字顯示。該顯示屏采用RS485通信接口,具有供電范圍寬、操作方便、相應(yīng)速度快、使用壽命長的優(yōu)點,每個顯示屏可以設(shè)定唯一的ID,單片機可以方便地控制RS485總線上的任何一個顯示屏進(jìn)行顯示。下位機的兩個顯示屏由單片機的UART0串口進(jìn)行控制。單片機的UART0通過MAX485電平轉(zhuǎn)換芯片與串口屏相連,兩個屏幕采用并聯(lián)的連接方式,程序中采用廣播的方式顯示信息。
顯示屏在使用前,首先使用VisualTFT軟件對其工作參數(shù)進(jìn)行設(shè)置。在VisualTFT軟件中,新建項目的工程文件,設(shè)定顯示屏的開機畫面為帶有企業(yè)LOGO的圖片;在參數(shù)設(shè)置選項中,設(shè)置顯示屏工作在水平顯示狀態(tài),顯示屏與單片機的通信比特率設(shè)定在9600bPS,并設(shè)置每個顯示屏的ID。設(shè)置完畢后把固件固化到顯示屏中。在顯示屏的驅(qū)動程序中,按照顯示屏的數(shù)據(jù)手冊編寫了對該顯示屏常用操作的所有函數(shù),單片機只要調(diào)用相關(guān)函數(shù)便可對顯示屏進(jìn)行操作[2]。
1.4 以太網(wǎng)通信與程序的實現(xiàn)
下位機與上位機的通信采用串口轉(zhuǎn)以太網(wǎng)口的有線網(wǎng)絡(luò)通信方式。有線通信能夠有效避免干擾,保證上下行通信的誤碼率較低。以太網(wǎng)通信模塊選用型號為K3的串口轉(zhuǎn)以太網(wǎng)通信模塊。K3模塊具有體積小、穩(wěn)定高、可靠性高、開發(fā)高效的特點,能夠方便地集成在主控板上。K3模塊內(nèi)部集成了經(jīng)過配置優(yōu)化的TCP/IP協(xié)議棧,并支持TCP Client、TCP Sever、UDP Client、UDP Sever和Http Client五種工作模式。通過網(wǎng)頁訪問K3的IP地址,可以方便地進(jìn)行工作模式的設(shè)定。在本應(yīng)用中,設(shè)定K3工作在“UDP Client”工作模式。單片機的UART2串口負(fù)責(zé)通過K3與上位機進(jìn)行通信,采用雙向通信的方式。單片機與以太網(wǎng)口的通信比特率設(shè)定在9600bPS。
下位機與上位機通過K3模塊進(jìn)行通信,采用自編的通信協(xié)議:上行數(shù)據(jù)數(shù)據(jù)格式為固定11個字節(jié),幀頭為0x55,幀尾為0xAA,中間為卡號和校驗;下行數(shù)據(jù)格式固定為64個字節(jié),幀頭為0xAA,幀尾為0x55,中間62個字節(jié)為刷卡人員的姓名、部門、所點菜品、金額、余額、校驗等信息。單片機的UART2串口工作于中斷狀態(tài),接收到的64幀數(shù)據(jù)存儲在數(shù)組中,通過分析接收到的數(shù)據(jù)作出相應(yīng)的控制與顯示。
1.5 系統(tǒng)測試
微信訂餐系統(tǒng)搭建完成后,開啟上位機服務(wù)器進(jìn)行系統(tǒng)測試。測試了多張射頻卡連續(xù)在多個下位機上刷卡100次的通訊情況。通過查看上位機后臺日志數(shù)據(jù)得出讀卡100%成功,上位機下發(fā)的數(shù)據(jù)單片機能夠100%接收到,偶有個別漢字顯示錯誤的情況,并不妨礙正常使用。一個刷卡周期,整機執(zhí)行時間小于0.3秒,整個操作沒有遲鈍感,用戶體驗良好。
2 結(jié)語
微信訂餐系統(tǒng)在星光農(nóng)機有限公司的食堂做過系統(tǒng)測試并投入使用,采用1個上位機服務(wù)器帶動8個下位機的模式。該系統(tǒng)能夠有效地統(tǒng)計就餐人員的數(shù)量,并根據(jù)所點菜品生成原材料的采購表格,在一定程度上節(jié)約了不必要的浪費。工作人員在后臺可以方便地進(jìn)行菜品的設(shè)定,并能隨時導(dǎo)出每月所有員工的就餐報表,使管理更加精細(xì)、精準(zhǔn)。具有一定的推廣價值。
參考文獻(xiàn)
[1] 劉穎等,王敏,文淵,等.低功耗刷卡器的設(shè)計[J].電子測量技術(shù),2017(11):197-199.
[2] 蔡華鋒,廖冬初,王小平,等.嵌入式以太網(wǎng)串口服務(wù)器設(shè)計[J].湖北工業(yè)大學(xué)學(xué)報,2018(2):9-12.
Design and Application of Subordinate Computer in Wechat Dining System
TANG Jian-xiang,LIAO Gen-xing
(China Jiliang University, Hangzhou Zhejiang? 310018)
Abstract:It is difficult to control the quantity of each meal in enterprise dining hall, in order to avoid waste and facilitate the output of statistical reports, this paper designed and developed a set of WeChat ordering system.
Key words:wechat ordering; card reader; Ethernet communication; serial interface screen; communication protocol