微信订餐系统下位机的设计与应用
2019-12-04唐建祥廖根兴
唐建祥 廖根兴
摘要:企業单位食堂每餐做多少量较难控制,为了避免浪费和方便输出统计报表,本文设计开发了一套微信点餐系统。
关键词:微信订餐;读卡器;以太网通信;串口屏;通信协议
中图分类号:TP311.56 文献标识码:A 文章编号:1007-9416(2019)08-0133-01
0 引言
在一些大型的企业、事业单位中,每天工作餐的就餐人数不固定,且变化较大,如何避免饭菜做多导致食材的浪费是一些企业必须要考虑的问题。根据企业的需求,设计了一套应用在企事业单位食堂中的微信点餐系统,本文着重介绍微信点餐系统中下位机的设计与实现方法。
1 微信订餐系统下位机的设计
下位机硬件系统主要由主控系统、读卡器电路、以太网通信电路、RS485双串口屏屏显示电路组成,如图1所示。所有的硬件电路都放在下位机的机壳当中,两个7寸的全彩显示屏分别位于刷卡机的两侧,方便食堂工作人员和就餐人员查看信息。下位机的实物图如图2所示。
1.1 主控MCU及所实现的功能
主控MCU选择ATmega2560单片机。该单片机运行在16M的频率下有16MIPS的处理速度;多达四个串行通信端口,能满足系统对多串口的设计需求;单片机内部256KB的程序存储器能够满足存储大量图表、图片信息,能够满足系统的设计要求。单片机的主要功能是实现整体控制。主程序中首先对单片机寄存器进行初始化操作,随即对串口屏进行初始化操作。单片机转入等待读取卡号环节,当读到有效卡号则通过以太网口把卡号发到上位机。单片机马上处于接收状态,用于接收以太网发回来的信息,并对接收到的合法信息进行分析[1]。
1.2 读卡器与读卡程序的实现
读卡器的作用是实时读取放置在下位机顶端的射频卡的信息,并经过单片机软件处理得到真实的卡号,该卡号与企业财务系统中的卡号相吻合。读卡器选用通用性强、稳定性强的读卡器,具有体积小、灵敏度高的特点,能够方便地嵌入到下位机的机壳内。由单片机的UART3串口对读卡器进行读写操作。读卡器的电平是RS232,因此单片机的TTL电平通过MAX232芯片进行电平转换后与读卡器相连。操作单片机的UART3即可以方便地进行读卡的操作。单片机与读卡器的通信比特率设定在9600bPS。设定单片机的UART3工作在中断状态下,中断服务函数把接收到的12个字节的数据存入数组并把读卡标志位置“1”。主程序查询到读卡标志位为“1”时进入提取卡号环节,程序判断帧头、帧尾的的标志性数据是否合法,如果合法则显示“读卡成功”,并把卡号发给上位机,否则显示“读卡失败”,等待下一次刷卡。
1.3 串口显示屏与驱动程序
显示屏的作用是实时显示就餐者的姓名、工号、所点菜品、菜品金额、卡余额等信息,方便就餐者和工作人员进行信息的查看。下位机的显示屏选用两个带组态的全彩7寸串口屏,分辨率为800×480像素,支持最大64×64像素的汉字显示。该显示屏采用RS485通信接口,具有供电范围宽、操作方便、相应速度快、使用寿命长的优点,每个显示屏可以设定唯一的ID,单片机可以方便地控制RS485总线上的任何一个显示屏进行显示。下位机的两个显示屏由单片机的UART0串口进行控制。单片机的UART0通过MAX485电平转换芯片与串口屏相连,两个屏幕采用并联的连接方式,程序中采用广播的方式显示信息。
显示屏在使用前,首先使用VisualTFT软件对其工作参数进行设置。在VisualTFT软件中,新建项目的工程文件,设定显示屏的开机画面为带有企业LOGO的图片;在参数设置选项中,设置显示屏工作在水平显示状态,显示屏与单片机的通信比特率设定在9600bPS,并设置每个显示屏的ID。设置完毕后把固件固化到显示屏中。在显示屏的驱动程序中,按照显示屏的数据手册编写了对该显示屏常用操作的所有函数,单片机只要调用相关函数便可对显示屏进行操作[2]。
1.4 以太网通信与程序的实现
下位机与上位机的通信采用串口转以太网口的有线网络通信方式。有线通信能够有效避免干扰,保证上下行通信的误码率较低。以太网通信模块选用型号为K3的串口转以太网通信模块。K3模块具有体积小、稳定高、可靠性高、开发高效的特点,能够方便地集成在主控板上。K3模块内部集成了经过配置优化的TCP/IP协议栈,并支持TCP Client、TCP Sever、UDP Client、UDP Sever和Http Client五种工作模式。通过网页访问K3的IP地址,可以方便地进行工作模式的设定。在本应用中,设定K3工作在“UDP Client”工作模式。单片机的UART2串口负责通过K3与上位机进行通信,采用双向通信的方式。单片机与以太网口的通信比特率设定在9600bPS。
下位机与上位机通过K3模块进行通信,采用自编的通信协议:上行数据数据格式为固定11个字节,帧头为0x55,帧尾为0xAA,中间为卡号和校验;下行数据格式固定为64个字节,帧头为0xAA,帧尾为0x55,中间62个字节为刷卡人员的姓名、部门、所点菜品、金额、余额、校验等信息。单片机的UART2串口工作于中断状态,接收到的64帧数据存储在数组中,通过分析接收到的数据作出相应的控制与显示。
1.5 系统测试
微信订餐系统搭建完成后,开启上位机服务器进行系统测试。测试了多张射频卡连续在多个下位机上刷卡100次的通讯情况。通过查看上位机后台日志数据得出读卡100%成功,上位机下发的数据单片机能够100%接收到,偶有个别汉字显示错误的情况,并不妨碍正常使用。一个刷卡周期,整机执行时间小于0.3秒,整个操作没有迟钝感,用户体验良好。
2 结语
微信订餐系统在星光农机有限公司的食堂做过系统测试并投入使用,采用1个上位机服务器带动8个下位机的模式。该系统能够有效地统计就餐人员的数量,并根据所点菜品生成原材料的采购表格,在一定程度上节约了不必要的浪费。工作人员在后台可以方便地进行菜品的设定,并能随时导出每月所有员工的就餐报表,使管理更加精细、精准。具有一定的推广价值。
参考文献
[1] 刘颖等,王敏,文渊,等.低功耗刷卡器的设计[J].电子测量技术,2017(11):197-199.
[2] 蔡华锋,廖冬初,王小平,等.嵌入式以太网串口服务器设计[J].湖北工业大学学报,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