吴宇航 谢少伟 俞轲鑫 黄恒英
(浙江水利水电学院,浙江杭州310018)
随着淡水资源日益短缺,用水管理逐渐加强,供水企业管理的水表数急剧增加,为方便管理与提倡节约用水,很多地区尤其是一些缺水地区,预付费水表的应用正在日益增加。目前预付费水表主要有两种形式:IC卡式[1]及代码式[2]。这两种形式主要存在以下问题[3]:IC卡预付费水表,需要建立营业厅,用户到指定地进行充值,易丢卡;代码式预付费水表,需要将代码手动输入到水表,操作不便,并对安装空间及位置要求较高。
本文提出了一种基于MIT App Inventor设计的预付费水表手机充值系统,较好地解决了预付费水表存在的上述问题。
图1为预付费水表手机充值系统框图。代码式预付费水表通过增加内置式“蓝牙接口”单元,实现与手机终端的通信。手机通过第三方支付平台完成预付费后,获取加密的预付费代码,预付费代码与水表身份(固化在水表中的身份识别号)关联,无法在其他水表使用,具有唯一性,降低了移动支付系统中代码安全性要求。手机终端采用蓝牙通信方式,通过App软件将预付费代码发送至预付费水表,实现预付费充值、余额及用水量查询等功能。
图1 系统框图
可采用串口透传蓝牙模块,通过串口与预付费水表进行通信。本次设计采用HC-05模块,该模块基于英国CSR公司BlueCore4-Ext芯片,遵循V2.1+EDR蓝牙规范,手机普及程度较高,但功耗相对较大,Page scan状态时的平均功耗为0.42 mA,Standby Host connection状态时的平均功耗为40 μA。对于预付费充值来说,由于使用频率很低,可以采用图2所示的工作电源控制原理图,通过控制图2中的使能端EN,使HC-05蓝牙模块间隙式工作,间隙时间远大于工作时间,以降低功耗。图2中Q1为P沟道MOS管,当EN为低电平时,Q1导通,输出3.3 V工作电压到HC-05蓝牙模块。
图2 工作电源控制原理图
采用MIT App Inventor工具进行设计,MIT App Inventor是以可视化编程语言为基础的Android应用开发工具,它抛弃了复杂的程序代码,事先将代码全部编写完毕,用户只要根据自己的需求编写简单的代码拼装程序,使用乐高积木式的堆栈法来完成Android程序设计[4]。
主要包括充值及查询两个方面,查询数据主要包括:余量查询、累计购买量查询、累计使用量查询等。以下为本次设计采用的预付费水表通信协议:
手机App发送的命令格式:前导字符+通信地址数据帧+命令代码数据帧+CS校验码+结束字符。
水表返回的数据格式:前导字符+通信地址数据帧+返回数据帧+CS校验码+结束字符。
相关说明:
(1)通信地址:为6字节,每个水表都有唯一的地址,需要在手机App中输入并保存。
(2)命令代码:余量查询为02(5字节,前4字节为00,下同);累计购买量查询为07;累计使用量查询为01等。充值命令代码:06(5字节)+10字节加密的预付费代码。预付费代码需要在手机App中输入。
(3)CS检验码:为通信地址数据帧、命令代码数据帧或返回数据帧的所有字节的累加和,单字节,不计溢出值。
(4)返回数据帧格式:数据长度+状态字+命令代码+返回数据。查询时状态字:00表示读取数据成功,01表示读取数据不成功,后面的返回数据无效。查询时返回数据为5字节16进制数,转换成10进制后最后1位为小数,水表及手机App上的显示数据为6位,如:00000.6 m3。充值时状态字:03表示充值成功,其他数据表示充值不成功,充值时状态字及命令代码后无返回数据。
图3为App交互界面。按照系统的功能需求,用组件设计器把开发软件需要的设计功能组件摆放到手机设计界面上,本设计所需要的设计功能组件有按钮(完成相应功能的控制)、标签(用于提示以及显示水表返回数据)、文本输入框(用于输入通信地址与预付费代码)、对话框(用于发送警告信息)、微数据库1(用于存储通信地址)、蓝牙客户端1(通过蓝牙使手机与水表通信)、计时器1(用于接收水表返回值)等,各功能设计组件按照项目需求设置相应的功能属性和界面位置。
3.4.1 通信地址输入及保存
通过逻辑设计器来组装程序块,首先将输入的通信地址添入列表项保存。然后将列表保存入微数据库,使通信地址保存在手机本地数据库中,如图4所示。
图4 通信地址输入及保存程序代码
3.4.2 预付费代码输入
首先对蓝牙是否连接,通信地址与充值码输入框是否为空进行判断。然后将输入框中的数据通过“提取文本字串”加入到“充值列表”,如图5所示。最后通过蓝牙发送列表并更新手机交互记录,如图6所示。
图5 文本字串的提取与充值列表的创建程序代码
图3 手机App交互界面设计图
图6 充值按钮程序代码
3.4.3 CS检验码计算
首先提取“通信地址输入框”中的相应字串,转换为十进制之后求和。然后将前一步骤所得的值与事先求得的固定值相加,并设定为局部变量“求和”。最后进行溢出值判断之后得出CS校验码,如图7所示。
3.4.4 查询数据转换及显示
首先对收到的数据进行判断,确定为何种命令的返回数据,然后进行校验码CS判断,最后将返回数据中对应位置的列表项提取出来,并运用AI2自带的“转换字符块”转换为十六进制数,在合并字符串之后再转回十进制数,并套用公式处理,形成所需值,进行相应的显示,如图8所示。
基于蓝牙通信,采用简单而能快速掌握的Android应用开发工具MIT App Inventor,完成了预付费水表手机充值系统设计,实现了预付费水表充值及数据查询相关功能,系统已经实际使用,稳定可靠。
图7 CS校验码计算程序代码
图8 查询数据转换及显示程序代码
[1]龚静雯,全书海.代码式预付费水表缴费发行管理系统的设计[J].武汉理工大学学报(信息与管理工程版),2005,27(3):110-113.
[2]泽越科技.各种预付费水表的优缺点[EB/OL].(2013-09-23)[2018-04-10]https://wenku.baidu.com/view/887607d37c1cfad6195fa7c1.html.
[3]邢伟华.预付费智能水表现状调查:智能水表问题及解决[EB/OL].(2011-05-11)[2018-04-10]https://wenku.baidu.com/view/9b4a65 dbad51f01dc281f12a.html.
[4]张居彦.移动App设计工具Inventor[J].电子世界,2013(15):170-171.