吳宇航 謝少偉 俞軻鑫 黃恒英
(浙江水利水電學(xué)院,浙江杭州310018)
隨著淡水資源日益短缺,用水管理逐漸加強(qiáng),供水企業(yè)管理的水表數(shù)急劇增加,為方便管理與提倡節(jié)約用水,很多地區(qū)尤其是一些缺水地區(qū),預(yù)付費(fèi)水表的應(yīng)用正在日益增加。目前預(yù)付費(fèi)水表主要有兩種形式:IC卡式[1]及代碼式[2]。這兩種形式主要存在以下問(wèn)題[3]:IC卡預(yù)付費(fèi)水表,需要建立營(yíng)業(yè)廳,用戶到指定地進(jìn)行充值,易丟卡;代碼式預(yù)付費(fèi)水表,需要將代碼手動(dòng)輸入到水表,操作不便,并對(duì)安裝空間及位置要求較高。
本文提出了一種基于MIT App Inventor設(shè)計(jì)的預(yù)付費(fèi)水表手機(jī)充值系統(tǒng),較好地解決了預(yù)付費(fèi)水表存在的上述問(wèn)題。
圖1為預(yù)付費(fèi)水表手機(jī)充值系統(tǒng)框圖。代碼式預(yù)付費(fèi)水表通過(guò)增加內(nèi)置式“藍(lán)牙接口”單元,實(shí)現(xiàn)與手機(jī)終端的通信。手機(jī)通過(guò)第三方支付平臺(tái)完成預(yù)付費(fèi)后,獲取加密的預(yù)付費(fèi)代碼,預(yù)付費(fèi)代碼與水表身份(固化在水表中的身份識(shí)別號(hào))關(guān)聯(lián),無(wú)法在其他水表使用,具有唯一性,降低了移動(dòng)支付系統(tǒng)中代碼安全性要求。手機(jī)終端采用藍(lán)牙通信方式,通過(guò)App軟件將預(yù)付費(fèi)代碼發(fā)送至預(yù)付費(fèi)水表,實(shí)現(xiàn)預(yù)付費(fèi)充值、余額及用水量查詢等功能。
圖1 系統(tǒng)框圖
可采用串口透?jìng)魉{(lán)牙模塊,通過(guò)串口與預(yù)付費(fèi)水表進(jìn)行通信。本次設(shè)計(jì)采用HC-05模塊,該模塊基于英國(guó)CSR公司BlueCore4-Ext芯片,遵循V2.1+EDR藍(lán)牙規(guī)范,手機(jī)普及程度較高,但功耗相對(duì)較大,Page scan狀態(tài)時(shí)的平均功耗為0.42 mA,Standby Host connection狀態(tài)時(shí)的平均功耗為40 μA。對(duì)于預(yù)付費(fèi)充值來(lái)說(shuō),由于使用頻率很低,可以采用圖2所示的工作電源控制原理圖,通過(guò)控制圖2中的使能端EN,使HC-05藍(lán)牙模塊間隙式工作,間隙時(shí)間遠(yuǎn)大于工作時(shí)間,以降低功耗。圖2中Q1為P溝道MOS管,當(dāng)EN為低電平時(shí),Q1導(dǎo)通,輸出3.3 V工作電壓到HC-05藍(lán)牙模塊。
圖2 工作電源控制原理圖
采用MIT App Inventor工具進(jìn)行設(shè)計(jì),MIT App Inventor是以可視化編程語(yǔ)言為基礎(chǔ)的Android應(yīng)用開發(fā)工具,它拋棄了復(fù)雜的程序代碼,事先將代碼全部編寫完畢,用戶只要根據(jù)自己的需求編寫簡(jiǎn)單的代碼拼裝程序,使用樂(lè)高積木式的堆棧法來(lái)完成Android程序設(shè)計(jì)[4]。
主要包括充值及查詢兩個(gè)方面,查詢數(shù)據(jù)主要包括:余量查詢、累計(jì)購(gòu)買量查詢、累計(jì)使用量查詢等。以下為本次設(shè)計(jì)采用的預(yù)付費(fèi)水表通信協(xié)議:
手機(jī)App發(fā)送的命令格式:前導(dǎo)字符+通信地址數(shù)據(jù)幀+命令代碼數(shù)據(jù)幀+CS校驗(yàn)碼+結(jié)束字符。
水表返回的數(shù)據(jù)格式:前導(dǎo)字符+通信地址數(shù)據(jù)幀+返回?cái)?shù)據(jù)幀+CS校驗(yàn)碼+結(jié)束字符。
相關(guān)說(shuō)明:
(1)通信地址:為6字節(jié),每個(gè)水表都有唯一的地址,需要在手機(jī)App中輸入并保存。
(2)命令代碼:余量查詢?yōu)?2(5字節(jié),前4字節(jié)為00,下同);累計(jì)購(gòu)買量查詢?yōu)?7;累計(jì)使用量查詢?yōu)?1等。充值命令代碼:06(5字節(jié))+10字節(jié)加密的預(yù)付費(fèi)代碼。預(yù)付費(fèi)代碼需要在手機(jī)App中輸入。
(3)CS檢驗(yàn)碼:為通信地址數(shù)據(jù)幀、命令代碼數(shù)據(jù)幀或返回?cái)?shù)據(jù)幀的所有字節(jié)的累加和,單字節(jié),不計(jì)溢出值。
(4)返回?cái)?shù)據(jù)幀格式:數(shù)據(jù)長(zhǎng)度+狀態(tài)字+命令代碼+返回?cái)?shù)據(jù)。查詢時(shí)狀態(tài)字:00表示讀取數(shù)據(jù)成功,01表示讀取數(shù)據(jù)不成功,后面的返回?cái)?shù)據(jù)無(wú)效。查詢時(shí)返回?cái)?shù)據(jù)為5字節(jié)16進(jìn)制數(shù),轉(zhuǎn)換成10進(jìn)制后最后1位為小數(shù),水表及手機(jī)App上的顯示數(shù)據(jù)為6位,如:00000.6 m3。充值時(shí)狀態(tài)字:03表示充值成功,其他數(shù)據(jù)表示充值不成功,充值時(shí)狀態(tài)字及命令代碼后無(wú)返回?cái)?shù)據(jù)。
圖3為App交互界面。按照系統(tǒng)的功能需求,用組件設(shè)計(jì)器把開發(fā)軟件需要的設(shè)計(jì)功能組件擺放到手機(jī)設(shè)計(jì)界面上,本設(shè)計(jì)所需要的設(shè)計(jì)功能組件有按鈕(完成相應(yīng)功能的控制)、標(biāo)簽(用于提示以及顯示水表返回?cái)?shù)據(jù))、文本輸入框(用于輸入通信地址與預(yù)付費(fèi)代碼)、對(duì)話框(用于發(fā)送警告信息)、微數(shù)據(jù)庫(kù)1(用于存儲(chǔ)通信地址)、藍(lán)牙客戶端1(通過(guò)藍(lán)牙使手機(jī)與水表通信)、計(jì)時(shí)器1(用于接收水表返回值)等,各功能設(shè)計(jì)組件按照項(xiàng)目需求設(shè)置相應(yīng)的功能屬性和界面位置。
3.4.1 通信地址輸入及保存
通過(guò)邏輯設(shè)計(jì)器來(lái)組裝程序塊,首先將輸入的通信地址添入列表項(xiàng)保存。然后將列表保存入微數(shù)據(jù)庫(kù),使通信地址保存在手機(jī)本地?cái)?shù)據(jù)庫(kù)中,如圖4所示。
圖4 通信地址輸入及保存程序代碼
3.4.2 預(yù)付費(fèi)代碼輸入
首先對(duì)藍(lán)牙是否連接,通信地址與充值碼輸入框是否為空進(jìn)行判斷。然后將輸入框中的數(shù)據(jù)通過(guò)“提取文本字串”加入到“充值列表”,如圖5所示。最后通過(guò)藍(lán)牙發(fā)送列表并更新手機(jī)交互記錄,如圖6所示。
圖5 文本字串的提取與充值列表的創(chuàng)建程序代碼
圖3 手機(jī)App交互界面設(shè)計(jì)圖
圖6 充值按鈕程序代碼
3.4.3 CS檢驗(yàn)碼計(jì)算
首先提取“通信地址輸入框”中的相應(yīng)字串,轉(zhuǎn)換為十進(jìn)制之后求和。然后將前一步驟所得的值與事先求得的固定值相加,并設(shè)定為局部變量“求和”。最后進(jìn)行溢出值判斷之后得出CS校驗(yàn)碼,如圖7所示。
3.4.4 查詢數(shù)據(jù)轉(zhuǎn)換及顯示
首先對(duì)收到的數(shù)據(jù)進(jìn)行判斷,確定為何種命令的返回?cái)?shù)據(jù),然后進(jìn)行校驗(yàn)碼CS判斷,最后將返回?cái)?shù)據(jù)中對(duì)應(yīng)位置的列表項(xiàng)提取出來(lái),并運(yùn)用AI2自帶的“轉(zhuǎn)換字符塊”轉(zhuǎn)換為十六進(jìn)制數(shù),在合并字符串之后再轉(zhuǎn)回十進(jìn)制數(shù),并套用公式處理,形成所需值,進(jìn)行相應(yīng)的顯示,如圖8所示。
基于藍(lán)牙通信,采用簡(jiǎn)單而能快速掌握的Android應(yīng)用開發(fā)工具M(jìn)IT App Inventor,完成了預(yù)付費(fèi)水表手機(jī)充值系統(tǒng)設(shè)計(jì),實(shí)現(xiàn)了預(yù)付費(fèi)水表充值及數(shù)據(jù)查詢相關(guān)功能,系統(tǒng)已經(jīng)實(shí)際使用,穩(wěn)定可靠。
圖7 CS校驗(yàn)碼計(jì)算程序代碼
圖8 查詢數(shù)據(jù)轉(zhuǎn)換及顯示程序代碼
[1]龔靜雯,全書海.代碼式預(yù)付費(fèi)水表繳費(fèi)發(fā)行管理系統(tǒng)的設(shè)計(jì)[J].武漢理工大學(xué)學(xué)報(bào)(信息與管理工程版),2005,27(3):110-113.
[2]澤越科技.各種預(yù)付費(fèi)水表的優(yōu)缺點(diǎn)[EB/OL].(2013-09-23)[2018-04-10]https://wenku.baidu.com/view/887607d37c1cfad6195fa7c1.html.
[3]邢偉華.預(yù)付費(fèi)智能水表現(xiàn)狀調(diào)查:智能水表問(wèn)題及解決[EB/OL].(2011-05-11)[2018-04-10]https://wenku.baidu.com/view/9b4a65 dbad51f01dc281f12a.html.
[4]張居彥.移動(dòng)App設(shè)計(jì)工具Inventor[J].電子世界,2013(15):170-171.