(中國煤炭科工集團 太原研究院,太原 030006)
智能溫度記錄儀在冷鏈系統中起著重要的監督作用,它用于跟蹤記錄食品、藥品在生產、貯藏、運輸等過程中的溫度,以防止這些產品因未處于所必需的特定低溫環境下而受到污染發生變質。
目前我國市場上的主流智能溫度記錄儀產品大多是通過計算機端管理軟件對其報警溫度、記錄周期、開始記錄時間等參數進行設置,并讀取和處理溫度數據。但是,智能溫度記錄儀的使用具有很強的移動性,在一些工作現場部署計算機對溫度記錄儀進行操作在很大程度上會影響工作效率。隨著智能手機的普及應用,手機移動性的優勢越來越明顯,一些手機軟件的使用頻率遠遠超過了同樣功能的計算機應用軟件,給人們帶來了更為便捷的服務。但是目前市場上還沒有智能溫度記錄儀的手機管理軟件。
在此背景下,本文以市面上常見的一款智能溫度記錄儀作為應用對象,設計開發了智能溫度記錄儀Android手機管理軟件,本軟件不僅完全實現了計算機端管理軟件的所有功能,而且功能更豐富,操作更簡單和方便。
智能溫度記錄儀內部的微控制器芯片固化了嵌入式軟件,使其具有檢測溫度、存儲記錄數據、與計算機或手機等進行串行通信的功能。本文所設計的智能溫度記錄儀手機管理軟件需要的硬件包括:Android手機、溫度記錄儀和藍牙微型打印機[1-2],其拓撲結構如圖1所示。手機和智能溫度記錄儀通過OTG(On The Go)連接,手機和藍牙微型打印機通過無線藍牙連接[3-5]。
圖1 系統拓撲結構圖
智能溫度記錄儀手機管理軟件主要分為三大功能模塊:讀寫溫度記錄儀信息模塊、溫度數據顯示模塊、溫度數據打印模塊。
本模塊包括以下子功能:
① 手機與記錄儀的通信,實現此功能調用了Android系統下的CP2102驅動API。
② 讀取記錄儀內的系統信息,用于查看記錄儀編號、記錄周期、記錄組數、已經記錄條數、啟動方式、關門次數、開始記錄時間、最近記錄時間、斷電情況估計、報警上限、報警下限、報警開始時間、報警結束時間、當前電池電壓、設置時電池電壓和溫度、最低電池電壓及對應的溫度、最低溫電池電壓及溫度、記錄儀型號、提示信息等。
③ 讀取記錄儀內的記錄數據,用戶可選擇讀取全部或部分數據,讀取部分數據時可指定時間范圍或記錄編號范圍。
④ 設置記錄儀的工作信息,對記錄周期、開始記錄時間、報警上限、報警下限等信息進行修改并寫入到記錄儀中。
該功能本質上是手機與記錄儀之間命令與參數的發送、接收和解析的過程。表1列出了通信過程中用到的喚醒、握手、讀取部分信息命令。手機在讀取數據之前需要喚醒記錄儀并與記錄儀握手,喚醒的過程是通過向記錄儀發送00命令并成功接收記錄儀返回來的任意字節數據;握手的過程是向記錄儀發送00命令和任意3字節參數并比較接收數據與發送參數是否一致,一致則表明握手成功,否則握手失敗。
表1 上位機讀取下位機系統信息命令表
表2最后兩行是手機向記錄儀發送01命令后接收到的返回參數“26 30 00 F5 FE 07 23 13 31 00 01”及其相應的解釋??梢钥闯?,記錄儀型號為F型,記錄儀號為12 288,溫度記錄開始時間為07月23日13時31分,溫度記錄周期為1分鐘,EEPROM當前地址為FEF5H,且其起始地址為0010H,根據式(1)計算出EEPROM內有數據的地址有65 254個,表示記錄溫度數據65 254/2=32 627條。
FEF5H-0010H+1=FEE6H=65254D
(1)
表2 讀取下位機部分信息命令時下位機向上位機返回參數解析表
本模塊包括曲線顯示功能和表格顯示功能,實現這兩個功能之前先要從記錄儀內讀取記錄的溫度數據。溫度數據存放在記錄儀的EEPROM里,通過使用EEPROM塊讀命令來讀取指定地址范圍內的溫度數據,并將讀取回的數據存放至數組Tdata[n],通過式(2)計算出各記錄點的記錄時間,記為數組Ttime[n],式中yyyy-MM-dd HH:mm表示溫度數據的起始時間(yyyy、MM、dd、HH、mm分別表示年份、月份、日期、時刻、分鐘,記為T),cycle為記錄周期。對于第i條(i從1開始)記錄來說,它的記錄編號為i,記錄時間為Ttime[i-1],溫度數據為Tdata[i-1]。表3列出了溫度數據表格。
yyyy-MM-dd HH:mm+(i-1)×cycle
(2)
MPAndroidChart組件中的LimitLine類用來繪制坐標系內的溫度報警線,調用構造方法來設置溫度報警線的位置以及標簽。
表格顯示功能將全部或部分溫度數據以表格的形式顯示,方便用戶快速觀察某一刻的溫度值。通過使用Android系統提供的listview控件來實現表格的觸摸翻頁顯示功能。該功能向用戶提供了圖2所示的交互界面,允許用戶讀取全部數據或讀取指定時間、指定記錄范圍的數據。
表3 溫度數據表
圖2 顯示溫度數據的設置界面
按時間顯示部分溫度數據,獲取用戶輸入的開始時間(yyyy1-MM1-dd1HH1:mm1,計為T1)和結束時間(yyyy2-MM2-dd2HH2:mm2,記為T2)。根據式(3)、式(4)來判斷這兩個時間是否為溫度記錄儀的記錄時間點,若SETS(SETE)為整數,說明yyyy1-MM1-dd1HH1:mm1、yyyy2-MM2-dd2HH2:mm2(分別記為T1、T2)是記錄時間點,將二者分別記為ETS和ETE;若SETS(SETE)不是整數,則需要通過式(5)和式(6)將計算后的ETS(ETE)作為起(止)記錄時間點。
SETS = (T1-T)/cycle
(3)
SETE = (T2- T)/cycle
(4)
(5)
(6)
表4 用戶輸入的時間段內的溫度數據表
(7)
(8)
表5 用戶輸入的記錄編號范圍內的溫度數據表
本文實現了將記錄儀信息在手機上進行打印格式的編輯、預覽、輸出打印操作,充分利用微型藍牙票據打印機底層硬件的功能設計開發了一個API,在廠商提供的接口函數上進行了更加豐富的功能擴充,既兼容了原有的文本打印、字符串打印、圖片打印等功能,又增加了文本編輯和打印、快速曲線打印、快速表格打印等功能。
(1)文本編輯功能
文本編輯功能提供了可視化編輯窗口,方便用戶編輯打印小票的格式和內容。本文設計了兩個文本編輯函數,一個是文本格式函數,將打印機所有文本格式底層命令集成到set_format函數中,調用函數時將打印輸出字符串及其格式放入輸入參數中即可,無需再查看格式命令表;另一個是文本編輯界面函數ui_edit,調用此函數會彈出可視化文本編輯窗口,編輯格式時只要點擊相應的格式按鈕即可,無需考慮格式命令或參數的定義。
文本編輯界面函數ui_edit提供了圖3所示界面,其中包含了所有文本編輯操作按鈕、打開文件、保存文件和打印按鈕。用戶可以通過這個界面輸入文字或點擊“打開文件”按鈕將已有的.txt文件導入到文本框內。界面內文本輸入框中的字符、下劃線、加粗、字號等操作按鈕分別與set_format函數中對應參數相關聯,點擊某個按鈕,相當于設置了set_fotmat函數的某個輸入參數值。
圖3 文本編輯界面
(2)快速打印溫度數據曲線
本文設計實現了曲線打印函數print_line(String uriString),將數據存放在excel表格文件或.txt文本文件中,調用本函數就可以將數據以曲線的形式快速打印出來,函數的輸入參數String uriString是由“文件路徑/文件名”組成的字符串。打印效果如圖4左側小票所示。
圖4 溫度數據曲線和表格打印小票
(3)快速打印溫度數據表格
本文設計實現了表格打印函數print_table(String uriString,int format),可實現快速打印excel表格的功能。函數print_table有2個輸入參數,String uriString參數是由excel表格“文件路徑/文件名”組成的字符串,int format參數是對表格邊框格式的定義,取值為0、1、2、3,0表示不打印邊框,1表示打印表格四周邊框,2表示只打印橫邊框,3表示只打印豎邊框。打印效果如圖4中右側小票所示。