丁 磊,陳勁鴻
(廣東工業大學計算機學院,廣東 廣州 510006)
農貿市場常見的傳統電子秤計量和計價功能簡單,在互聯網經濟飛速發展的今天已無法滿足市場的需要.且隨著大數據時代的到來,傳統電子秤在稱重、交易記錄的儲存和統計方面存在的功能缺失日益顯現.近年來,有研究者設計出一些新型的電子秤,如利用RFID 射頻識別模塊[1]或藍牙模塊[2]對電子秤數據進行無線傳輸,但沒有設計相應的應用程序對數據進行儲存和處理.而一些基于藍牙2.0 模塊和Android 應用的無線電子秤系統[3-4],則能實現重量數據的處理和儲存.有的研究側重于提升電子秤的數據處理能力,如有一種基于Android 平臺的收銀秤系統,能實現商品管理、計價收銀、交易記錄儲存等的功能[5].
參考上述的研究成果,本文設計了一種基于Android 應用的新型電子秤.在使用自定義通信接口協議的基礎上,通過有線/ 無線的方式實現稱重模塊(含通訊模塊)與Android 終端之間的數據傳輸,Android 系統上運行的電子秤APP 具備商品管理、計價收銀、數據儲存、數據分析等功能.使用兩種方式進行數據傳輸的設計有利于提高電子秤系統的可靠性,適應更多的應用場合.而基于Android 系統的電子秤APP,可以方便快捷地對傳統電子秤的功能進行擴展,功能迭代的速度更快,開發成本更低,可以大大降低用戶的成本.
新型電子秤的總體結構如圖1 所示,其主要由稱重模塊(含通信模塊)和Android平板電腦兩部分組成.稱重及通訊模塊包含05-1K 壓力傳感器、HX712 A/D 轉換模塊[6]、CC2540 低功耗藍牙模塊[7-8]和PL2303HXD USB 轉串口模塊.CC2540 芯片內嵌射頻收發器并運行BLE4.0 協議棧,兼具控制與藍牙通訊功能.Android 平板電腦使用UnisCom的mz73.新型電子秤設計了獨立的電源模塊,包括1 路5V/1A 及1 路5V/2A,分別為稱重模塊(含通訊模塊)和平板電腦供電.

圖1 系統整體結構設計
新型電子秤具有數據采集傳輸和數據儲存處理兩大功能分層.每個分層包含若干個子層,下層結構能為上層結構提供數據或接口.
稱重及通訊的程序流程如圖2 所示,核心功能包括傳感器數據采集及按自定義的通信接口協議進行數據通信.
實際應用中應變式壓力傳感器輸入- 輸出特性存在非線性誤差.同時,HX712 A/D轉換模塊受到外界干擾時亦可能會出現輸出異常,因此電子秤使用限幅和算數平均方法對稱重數據進行濾波[9],并使用曲線擬合的方法對傳感器的誤差進行校正[10].

圖2 稱重及通訊模塊程序
APP 使用Java 語言和擴展標記語言(Extensible Markup Language,XML)進行混合編程.Java 語言主要用于編寫應用程序的流程和邏輯,XML 主要用于界面布局的設計[11].APP 應用程序的主要功能包括商品管理、重量數據接收和處理、交易記錄管理、生成報表、功能設置,如圖3 所示.

圖3 收銀秤APP 功能框架
1.2.1 數據庫設計
APP 使用Android 系統集成的一個輕量級關系數據庫——SQLite 來儲存用戶數據.為了實現商品管理和交易記錄儲存的功能,設計了如表1 至表3 所示的數據表.商品信息表用于儲存商品的基本信息,如名稱、單價等.交易記錄表用于儲存交易的大致信息,如時間,交易額等,信息量較少,方便用戶快速了解交易情況,而交易記錄細節表則儲存了每筆交易中所交易的商品的詳細信息,信息量較大,可用于統計商品銷量.
一條商品信息占用23 B 的儲存空間,由于每一條商品信息對應一張圖片,而經測試一張大小約為30 KB 的圖片即可滿足顯示需要.因此對于有100 種商品的用戶,約需2.3 KB 的儲存空間來儲存商品信息,約需3 MB 的儲存空間來儲存商品圖片.

表1 商品信息表
一條交易記錄占用37B 的儲存空間,一條交易記錄細節占用60 B 的儲存空間.對于每天大約有500 筆交易,每筆交易大約有50 種商品的用戶,一天會產生約1.5 MB的交易數據.因此Android 平板電腦能滿足數據儲存的空間要求.
1.2.2 商品管理
商品管理的程序流程和界面如圖4 所示,用戶可對數據庫中的商品信息進行添加、查找、刪除等的操作.此外該界面還具有簡易收銀和界面跳轉的功能.用戶可以通過點擊商品列表中的商品,跳轉到數據接收和處理界面,所選擇的具體商品信息會用于計價和生成交易記錄.

表2 交易記錄表

表3 交易記錄細節表

圖4 商品管理界面和程序
1.2.3 數據接收和處理
數據接收和處理的程序流程和界面如圖5 所示.APP 會根據用戶的設置切換通訊模式為藍牙模式[12]或USB Host 模式[13],并自動連接稱重及通訊模塊,然后根據用戶所選擇的商品或所輸入的單價生成相應的交易記錄.此外該界面還提供去皮、清零和收銀等功能.
1.2.4 交易記錄管理
交易記錄界面和報表界面如圖6 所示.交易記錄界面提供了交易記錄和交易記錄細節查看、刪除和導出功能.用戶可通過下拉菜單來選擇交易時間,然后對篩選出來的交易記錄和交易記錄細節進行相應的操作.
在報表界面,用戶可通過下拉菜單選擇時間來查看年報表、月報表或日報表.此外,應用還提供一定的數據挖掘功能,通過點擊商品圖表按鈕,用戶可查看銷售量前十的商品的銷售額排名.通過點擊時間圖表按鈕,用戶可查看各時段的銷售量分布.

圖5 數據接收與處理程序界面和功能流程

圖6 交易記錄和報表界面
稱重模塊通過表4 所示的自定義通訊接口協議來進行數據傳輸,傳統電子秤的通訊協議一般包含重量、單價和總金額3 個部分,因此為了保持通用性,本文所設計的通訊協議保留了這3 部分內容.此外該協議還增加了版本號、支付序列號、簽名信息和校驗碼等部分.版本號用于指示數據包的開始位置.支付序列號用于區分兩次稱重結果,如連續兩次稱重同一種商品時,可使用該序列號進行區分,并生成兩條交易數據.簽名信息可對各數據項按特定的規則進行轉換從而對數據進行加密.校驗碼通過各數據項的按序異或得出,用于對稱重數據的完整性進行校驗.

表4 自定義通訊接口協議
稱重模塊能通過有線和無線的方式進行數據傳輸,但這兩種數據傳輸方式有一定的差異.通過自定義的通訊接口協議,在應用層上統一這兩種通訊方式的數據傳輸格式.這種分層設計,有利于屏蔽硬件間的差異,方便后續的功能擴展.
為了測試新型電子秤的稱重、數據儲存和處理的性能,本文使用一臺UnisCom 的mz73 型平板電腦運行APP.平板電腦一方面通過藍牙與稱重模塊進行無線連接,以便接收重量數據.另一方面通過Android Studio 的調試橋插件和電腦連接,以便電腦監控其工作狀態,并記錄所需的數據.
利用M1 級砝碼的組合、一臺符合標準的電子秤、一臺新型電子秤進行稱重誤差測試[14].將標準電子秤與新型電子秤放置于同一工作臺上,測試所用的M1 級砝碼的最大重量為1 kg,在該范圍內實際值為砝碼的重量.當重量超出1 kg 時,利用重物模擬砝碼,并在標準電子秤上得出重物的重量,實際值為重物的重量.測試結果如表5 所示.

表5 電子秤稱重誤差測試結果
市面上的電子秤精度可分為四級,而農貿市場所用的數字指示秤一般準確度等級為3 級,因此根據國家計量檢定規程《JJG 539-2016 數字指示秤檢定規程》[15],對于一臺最大量程為12 kg 的電子秤,可取其檢定分度值e 為10 g.則當載荷m 滿足0≤m≤5 kg時,最大允許誤差為±0.5 e,即±5 g,而當荷載m 滿足關系5 kg≤m≤20 kg 時,最大允許誤差為±1.0 e,即±10 g.則由表5 可知,新型電子秤的稱重誤差符合國家相關計量檢定規程.
使用測試程序隨機生成100、1 000 和10 000 條交易記錄,每筆交易包含50 種商品的交易信息.將上述數據寫入到電子秤APP 的數據庫中,然后模擬用戶對交易記錄進行刪除、查找和統計等操作,測試這些操作的完成時間,測試結果如表6 所示.
刪除交易記錄和統計商品銷量前十操作所消耗的時間較長,其余操作均能在1 s 內完成,說明新型電子秤的大部分的數據操作能提供較好的用戶體驗.

表6 數據操作完成時間測試結果
本文設計的基于Android 應用的新型電子秤,在通訊方面,使用無線和有線方式進行數據傳輸,提高了系統的可靠性.而使用自定義的通訊接口協議統一數據傳輸的格式,則實現了分層設計,有利于屏蔽硬件的差異.在軟件方面,基于Android 平臺開發的APP,除了能提供數據儲存和管理功能外,還提供一定的數據分析功能,方便用戶進行商品管理和實時了解交易狀況.該新型電子秤具有簡單易用、可靠、數據處理功能強的特點,能滿足人們對電子秤功能提升的需求.