丁 磊,陳勁鴻
(廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,廣東 廣州 510006)
農(nóng)貿(mào)市場(chǎng)常見的傳統(tǒng)電子秤計(jì)量和計(jì)價(jià)功能簡(jiǎn)單,在互聯(lián)網(wǎng)經(jīng)濟(jì)飛速發(fā)展的今天已無法滿足市場(chǎng)的需要.且隨著大數(shù)據(jù)時(shí)代的到來,傳統(tǒng)電子秤在稱重、交易記錄的儲(chǔ)存和統(tǒng)計(jì)方面存在的功能缺失日益顯現(xiàn).近年來,有研究者設(shè)計(jì)出一些新型的電子秤,如利用RFID 射頻識(shí)別模塊[1]或藍(lán)牙模塊[2]對(duì)電子秤數(shù)據(jù)進(jìn)行無線傳輸,但沒有設(shè)計(jì)相應(yīng)的應(yīng)用程序?qū)?shù)據(jù)進(jìn)行儲(chǔ)存和處理.而一些基于藍(lán)牙2.0 模塊和Android 應(yīng)用的無線電子秤系統(tǒng)[3-4],則能實(shí)現(xiàn)重量數(shù)據(jù)的處理和儲(chǔ)存.有的研究側(cè)重于提升電子秤的數(shù)據(jù)處理能力,如有一種基于Android 平臺(tái)的收銀秤系統(tǒng),能實(shí)現(xiàn)商品管理、計(jì)價(jià)收銀、交易記錄儲(chǔ)存等的功能[5].
參考上述的研究成果,本文設(shè)計(jì)了一種基于Android 應(yīng)用的新型電子秤.在使用自定義通信接口協(xié)議的基礎(chǔ)上,通過有線/ 無線的方式實(shí)現(xiàn)稱重模塊(含通訊模塊)與Android 終端之間的數(shù)據(jù)傳輸,Android 系統(tǒng)上運(yùn)行的電子秤APP 具備商品管理、計(jì)價(jià)收銀、數(shù)據(jù)儲(chǔ)存、數(shù)據(jù)分析等功能.使用兩種方式進(jìn)行數(shù)據(jù)傳輸?shù)脑O(shè)計(jì)有利于提高電子秤系統(tǒng)的可靠性,適應(yīng)更多的應(yīng)用場(chǎng)合.而基于Android 系統(tǒng)的電子秤APP,可以方便快捷地對(duì)傳統(tǒng)電子秤的功能進(jìn)行擴(kuò)展,功能迭代的速度更快,開發(fā)成本更低,可以大大降低用戶的成本.
新型電子秤的總體結(jié)構(gòu)如圖1 所示,其主要由稱重模塊(含通信模塊)和Android平板電腦兩部分組成.稱重及通訊模塊包含05-1K 壓力傳感器、HX712 A/D 轉(zhuǎn)換模塊[6]、CC2540 低功耗藍(lán)牙模塊[7-8]和PL2303HXD USB 轉(zhuǎn)串口模塊.CC2540 芯片內(nèi)嵌射頻收發(fā)器并運(yùn)行BLE4.0 協(xié)議棧,兼具控制與藍(lán)牙通訊功能.Android 平板電腦使用UnisCom的mz73.新型電子秤設(shè)計(jì)了獨(dú)立的電源模塊,包括1 路5V/1A 及1 路5V/2A,分別為稱重模塊(含通訊模塊)和平板電腦供電.
圖1 系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)
新型電子秤具有數(shù)據(jù)采集傳輸和數(shù)據(jù)儲(chǔ)存處理兩大功能分層.每個(gè)分層包含若干個(gè)子層,下層結(jié)構(gòu)能為上層結(jié)構(gòu)提供數(shù)據(jù)或接口.
稱重及通訊的程序流程如圖2 所示,核心功能包括傳感器數(shù)據(jù)采集及按自定義的通信接口協(xié)議進(jìn)行數(shù)據(jù)通信.
實(shí)際應(yīng)用中應(yīng)變式壓力傳感器輸入- 輸出特性存在非線性誤差.同時(shí),HX712 A/D轉(zhuǎn)換模塊受到外界干擾時(shí)亦可能會(huì)出現(xiàn)輸出異常,因此電子秤使用限幅和算數(shù)平均方法對(duì)稱重?cái)?shù)據(jù)進(jìn)行濾波[9],并使用曲線擬合的方法對(duì)傳感器的誤差進(jìn)行校正[10].
圖2 稱重及通訊模塊程序
APP 使用Java 語言和擴(kuò)展標(biāo)記語言(Extensible Markup Language,XML)進(jìn)行混合編程.Java 語言主要用于編寫應(yīng)用程序的流程和邏輯,XML 主要用于界面布局的設(shè)計(jì)[11].APP 應(yīng)用程序的主要功能包括商品管理、重量數(shù)據(jù)接收和處理、交易記錄管理、生成報(bào)表、功能設(shè)置,如圖3 所示.
圖3 收銀秤APP 功能框架
1.2.1 數(shù)據(jù)庫(kù)設(shè)計(jì)
APP 使用Android 系統(tǒng)集成的一個(gè)輕量級(jí)關(guān)系數(shù)據(jù)庫(kù)——SQLite 來儲(chǔ)存用戶數(shù)據(jù).為了實(shí)現(xiàn)商品管理和交易記錄儲(chǔ)存的功能,設(shè)計(jì)了如表1 至表3 所示的數(shù)據(jù)表.商品信息表用于儲(chǔ)存商品的基本信息,如名稱、單價(jià)等.交易記錄表用于儲(chǔ)存交易的大致信息,如時(shí)間,交易額等,信息量較少,方便用戶快速了解交易情況,而交易記錄細(xì)節(jié)表則儲(chǔ)存了每筆交易中所交易的商品的詳細(xì)信息,信息量較大,可用于統(tǒng)計(jì)商品銷量.
一條商品信息占用23 B 的儲(chǔ)存空間,由于每一條商品信息對(duì)應(yīng)一張圖片,而經(jīng)測(cè)試一張大小約為30 KB 的圖片即可滿足顯示需要.因此對(duì)于有100 種商品的用戶,約需2.3 KB 的儲(chǔ)存空間來儲(chǔ)存商品信息,約需3 MB 的儲(chǔ)存空間來儲(chǔ)存商品圖片.
表1 商品信息表
一條交易記錄占用37B 的儲(chǔ)存空間,一條交易記錄細(xì)節(jié)占用60 B 的儲(chǔ)存空間.對(duì)于每天大約有500 筆交易,每筆交易大約有50 種商品的用戶,一天會(huì)產(chǎn)生約1.5 MB的交易數(shù)據(jù).因此Android 平板電腦能滿足數(shù)據(jù)儲(chǔ)存的空間要求.
1.2.2 商品管理
商品管理的程序流程和界面如圖4 所示,用戶可對(duì)數(shù)據(jù)庫(kù)中的商品信息進(jìn)行添加、查找、刪除等的操作.此外該界面還具有簡(jiǎn)易收銀和界面跳轉(zhuǎn)的功能.用戶可以通過點(diǎn)擊商品列表中的商品,跳轉(zhuǎn)到數(shù)據(jù)接收和處理界面,所選擇的具體商品信息會(huì)用于計(jì)價(jià)和生成交易記錄.
表2 交易記錄表
表3 交易記錄細(xì)節(jié)表
圖4 商品管理界面和程序
1.2.3 數(shù)據(jù)接收和處理
數(shù)據(jù)接收和處理的程序流程和界面如圖5 所示.APP 會(huì)根據(jù)用戶的設(shè)置切換通訊模式為藍(lán)牙模式[12]或USB Host 模式[13],并自動(dòng)連接稱重及通訊模塊,然后根據(jù)用戶所選擇的商品或所輸入的單價(jià)生成相應(yīng)的交易記錄.此外該界面還提供去皮、清零和收銀等功能.
1.2.4 交易記錄管理
交易記錄界面和報(bào)表界面如圖6 所示.交易記錄界面提供了交易記錄和交易記錄細(xì)節(jié)查看、刪除和導(dǎo)出功能.用戶可通過下拉菜單來選擇交易時(shí)間,然后對(duì)篩選出來的交易記錄和交易記錄細(xì)節(jié)進(jìn)行相應(yīng)的操作.
在報(bào)表界面,用戶可通過下拉菜單選擇時(shí)間來查看年報(bào)表、月報(bào)表或日?qǐng)?bào)表.此外,應(yīng)用還提供一定的數(shù)據(jù)挖掘功能,通過點(diǎn)擊商品圖表按鈕,用戶可查看銷售量前十的商品的銷售額排名.通過點(diǎn)擊時(shí)間圖表按鈕,用戶可查看各時(shí)段的銷售量分布.
圖5 數(shù)據(jù)接收與處理程序界面和功能流程
圖6 交易記錄和報(bào)表界面
稱重模塊通過表4 所示的自定義通訊接口協(xié)議來進(jìn)行數(shù)據(jù)傳輸,傳統(tǒng)電子秤的通訊協(xié)議一般包含重量、單價(jià)和總金額3 個(gè)部分,因此為了保持通用性,本文所設(shè)計(jì)的通訊協(xié)議保留了這3 部分內(nèi)容.此外該協(xié)議還增加了版本號(hào)、支付序列號(hào)、簽名信息和校驗(yàn)碼等部分.版本號(hào)用于指示數(shù)據(jù)包的開始位置.支付序列號(hào)用于區(qū)分兩次稱重結(jié)果,如連續(xù)兩次稱重同一種商品時(shí),可使用該序列號(hào)進(jìn)行區(qū)分,并生成兩條交易數(shù)據(jù).簽名信息可對(duì)各數(shù)據(jù)項(xiàng)按特定的規(guī)則進(jìn)行轉(zhuǎn)換從而對(duì)數(shù)據(jù)進(jìn)行加密.校驗(yàn)碼通過各數(shù)據(jù)項(xiàng)的按序異或得出,用于對(duì)稱重?cái)?shù)據(jù)的完整性進(jìn)行校驗(yàn).
表4 自定義通訊接口協(xié)議
稱重模塊能通過有線和無線的方式進(jìn)行數(shù)據(jù)傳輸,但這兩種數(shù)據(jù)傳輸方式有一定的差異.通過自定義的通訊接口協(xié)議,在應(yīng)用層上統(tǒng)一這兩種通訊方式的數(shù)據(jù)傳輸格式.這種分層設(shè)計(jì),有利于屏蔽硬件間的差異,方便后續(xù)的功能擴(kuò)展.
為了測(cè)試新型電子秤的稱重、數(shù)據(jù)儲(chǔ)存和處理的性能,本文使用一臺(tái)UnisCom 的mz73 型平板電腦運(yùn)行APP.平板電腦一方面通過藍(lán)牙與稱重模塊進(jìn)行無線連接,以便接收重量數(shù)據(jù).另一方面通過Android Studio 的調(diào)試橋插件和電腦連接,以便電腦監(jiān)控其工作狀態(tài),并記錄所需的數(shù)據(jù).
利用M1 級(jí)砝碼的組合、一臺(tái)符合標(biāo)準(zhǔn)的電子秤、一臺(tái)新型電子秤進(jìn)行稱重誤差測(cè)試[14].將標(biāo)準(zhǔn)電子秤與新型電子秤放置于同一工作臺(tái)上,測(cè)試所用的M1 級(jí)砝碼的最大重量為1 kg,在該范圍內(nèi)實(shí)際值為砝碼的重量.當(dāng)重量超出1 kg 時(shí),利用重物模擬砝碼,并在標(biāo)準(zhǔn)電子秤上得出重物的重量,實(shí)際值為重物的重量.測(cè)試結(jié)果如表5 所示.
表5 電子秤稱重誤差測(cè)試結(jié)果
市面上的電子秤精度可分為四級(jí),而農(nóng)貿(mào)市場(chǎng)所用的數(shù)字指示秤一般準(zhǔn)確度等級(jí)為3 級(jí),因此根據(jù)國(guó)家計(jì)量檢定規(guī)程《JJG 539-2016 數(shù)字指示秤檢定規(guī)程》[15],對(duì)于一臺(tái)最大量程為12 kg 的電子秤,可取其檢定分度值e 為10 g.則當(dāng)載荷m 滿足0≤m≤5 kg時(shí),最大允許誤差為±0.5 e,即±5 g,而當(dāng)荷載m 滿足關(guān)系5 kg≤m≤20 kg 時(shí),最大允許誤差為±1.0 e,即±10 g.則由表5 可知,新型電子秤的稱重誤差符合國(guó)家相關(guān)計(jì)量檢定規(guī)程.
使用測(cè)試程序隨機(jī)生成100、1 000 和10 000 條交易記錄,每筆交易包含50 種商品的交易信息.將上述數(shù)據(jù)寫入到電子秤APP 的數(shù)據(jù)庫(kù)中,然后模擬用戶對(duì)交易記錄進(jìn)行刪除、查找和統(tǒng)計(jì)等操作,測(cè)試這些操作的完成時(shí)間,測(cè)試結(jié)果如表6 所示.
刪除交易記錄和統(tǒng)計(jì)商品銷量前十操作所消耗的時(shí)間較長(zhǎng),其余操作均能在1 s 內(nèi)完成,說明新型電子秤的大部分的數(shù)據(jù)操作能提供較好的用戶體驗(yàn).
表6 數(shù)據(jù)操作完成時(shí)間測(cè)試結(jié)果
本文設(shè)計(jì)的基于Android 應(yīng)用的新型電子秤,在通訊方面,使用無線和有線方式進(jìn)行數(shù)據(jù)傳輸,提高了系統(tǒng)的可靠性.而使用自定義的通訊接口協(xié)議統(tǒng)一數(shù)據(jù)傳輸?shù)母袷?,則實(shí)現(xiàn)了分層設(shè)計(jì),有利于屏蔽硬件的差異.在軟件方面,基于Android 平臺(tái)開發(fā)的APP,除了能提供數(shù)據(jù)儲(chǔ)存和管理功能外,還提供一定的數(shù)據(jù)分析功能,方便用戶進(jìn)行商品管理和實(shí)時(shí)了解交易狀況.該新型電子秤具有簡(jiǎn)單易用、可靠、數(shù)據(jù)處理功能強(qiáng)的特點(diǎn),能滿足人們對(duì)電子秤功能提升的需求.