蔣 愷陳超林
(南寧鐵路局 科學(xué)技術(shù)研究所,1.助理工程師,2.工程師,廣西 南寧 530001)
?
基于Android平臺(tái)的客列尾APP的研發(fā)
蔣愷1陳超林2
(南寧鐵路局科學(xué)技術(shù)研究所,1.助理工程師,2.工程師,廣西南寧530001)
摘要:針對(duì)目前客列尾數(shù)據(jù)只有在列車(chē)入庫(kù)以后才能進(jìn)行讀取和分析,出現(xiàn)故障后管理人員不能及時(shí)拿到數(shù)據(jù)分析故障原因這一問(wèn)題,在Android平臺(tái)上開(kāi)發(fā)了“客列尾APP”應(yīng)用軟件,實(shí)現(xiàn)了能夠在列車(chē)運(yùn)行途中讀取客列尾數(shù)據(jù)并傳送到指定郵箱的功能;本文簡(jiǎn)述了該APP的開(kāi)發(fā)背景,設(shè)計(jì)要求及開(kāi)發(fā)過(guò)程。目前該APP運(yùn)行穩(wěn)定、可靠,具有使用方便、維護(hù)簡(jiǎn)單等特點(diǎn),減輕了職工勞動(dòng)強(qiáng)度,提高了工作效率,有良好的推廣應(yīng)用前景。
關(guān)鍵詞:客列尾;Android串口通信;SQLite;CRC校驗(yàn)
10.13572/j.cnki.tdyy.2016.03.016
列車(chē)尾部安全防護(hù)裝置(簡(jiǎn)稱(chēng)客列尾)是保證列車(chē)運(yùn)行安全而設(shè)計(jì)生產(chǎn)的安全防護(hù)設(shè)備,也是重要的鐵路行車(chē)設(shè)備。它的主要功能有列車(chē)尾部風(fēng)壓查詢(xún),列車(chē)尾部風(fēng)壓異常告警,列車(chē)尾部排風(fēng)制動(dòng)等等。自2014年10月以來(lái),旅客列車(chē)逐步安裝了客列尾裝置,取代了運(yùn)轉(zhuǎn)車(chē)長(zhǎng),然而目前客列尾裝置的數(shù)據(jù)分析工作比較被動(dòng),只有在列車(chē)入庫(kù)以后,拆下客列尾裝置,送到專(zhuān)用庫(kù)房才能對(duì)其進(jìn)行數(shù)據(jù)讀取及分析。不僅增加了職工勞動(dòng)強(qiáng)度,也影響了工作效率,因此,急需要一個(gè)便攜式裝置能夠在列車(chē)運(yùn)行途中讀取客列尾的記錄數(shù)據(jù),通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò)發(fā)到指定郵箱,供相關(guān)人員分析,及時(shí)了解客車(chē)運(yùn)行狀態(tài)。便攜式裝置選用Android平板,主要的工作任務(wù)是開(kāi)發(fā)讀取及分析客列尾數(shù)據(jù)的應(yīng)用軟件,即客列尾APP。
實(shí)現(xiàn)在Android平板上安裝客列尾APP,APP獲取到客列尾裝置返回的原始數(shù)據(jù)并解析成文件,再通過(guò)WIFI或GPRS無(wú)線(xiàn)網(wǎng)絡(luò)將文件發(fā)送到指定郵箱,網(wǎng)絡(luò)拓?fù)鋱D見(jiàn)圖1。具體設(shè)計(jì)要求如下:
1)APP向客列尾裝置的RS232串口發(fā)送指令,客列尾裝置收到指令后返回283Kb左右的數(shù)據(jù),平板可把這些數(shù)據(jù)解析成可識(shí)別的中文,以列表的形式展現(xiàn)在平板上。
利用平板的GRPS和WiFi二種無(wú)線(xiàn)網(wǎng)絡(luò)發(fā)送郵件(帶附件)到指定郵箱。在郵件發(fā)送之前軟件自動(dòng)判斷數(shù)據(jù)網(wǎng)絡(luò),發(fā)送結(jié)束后自動(dòng)關(guān)閉數(shù)據(jù)網(wǎng)絡(luò),節(jié)省數(shù)據(jù)流量。
2)可對(duì)平板串口的參數(shù)進(jìn)行設(shè)置,也可設(shè)置接收郵箱的地址及SMTP服務(wù)器。
3)具有操作日志記錄功能,只有達(dá)到一定權(quán)限的操作人員才能對(duì)日志進(jìn)行查看和刪除。
4)在軟件界面上能夠動(dòng)態(tài)顯示數(shù)據(jù)讀取、數(shù)據(jù)解析、郵件發(fā)送的狀態(tài)。
5)用Excel軟件能直接打開(kāi)接收到的郵件(附件)。
圖1 網(wǎng)絡(luò)拓?fù)鋱D
2.1開(kāi)發(fā)平臺(tái)的選擇根據(jù)設(shè)計(jì)要求,現(xiàn)在比較主流的手持設(shè)備開(kāi)發(fā)平臺(tái)為WinCE和Linux開(kāi)發(fā)平臺(tái)。Linux具有支持多種硬件平臺(tái),占有較小的硬件資源,高可定制性,強(qiáng)大的網(wǎng)絡(luò)功能等優(yōu)勢(shì)。WinCE在這幾個(gè)方面表現(xiàn)相對(duì)較弱,基于Linux內(nèi)核的Android操作系統(tǒng)的應(yīng)用軟件還能移植到現(xiàn)有的Android智能手機(jī)中使用。基于此,最后選定Android平板作為開(kāi)發(fā)平臺(tái),Java為軟件開(kāi)發(fā)語(yǔ)言。
2.2串口數(shù)據(jù)幀解析軟件通過(guò)RS232串口向客列尾裝置下發(fā)讀指令,客列尾會(huì)返回283Kb左右的通信數(shù)據(jù),每條數(shù)據(jù)幀結(jié)構(gòu)見(jiàn)表1。
表1 數(shù)據(jù)幀結(jié)構(gòu)
通過(guò)對(duì)數(shù)據(jù)幀的分析,可以發(fā)現(xiàn)數(shù)據(jù)幀以“1002”開(kāi)頭,以“1003”結(jié)束;狀態(tài)數(shù)據(jù)和CRC校驗(yàn)碼為4位;列尾ID為6位;記錄時(shí)間和機(jī)車(chē)號(hào)為8位;作業(yè)類(lèi)別為4位或者6位。根據(jù)數(shù)據(jù)幀結(jié)構(gòu),我們提取出“記錄時(shí)間”,“機(jī)車(chē)號(hào)”,“KLW_ID”,“作業(yè)類(lèi)別”,“狀態(tài)數(shù)據(jù)”等我們所需要的信息。例如:F90801即表示作業(yè)類(lèi)別中的“開(kāi)機(jī)”。為了防止數(shù)據(jù)幀在解析過(guò)程中出現(xiàn)漏解析、錯(cuò)解析,保證數(shù)據(jù)的完整性和準(zhǔn)確性,我們先用正則表達(dá)式將數(shù)據(jù)幀分隔開(kāi),然后在對(duì)每一條通信數(shù)據(jù)幀解析的時(shí)候都會(huì)進(jìn)行CRC校驗(yàn),只有校驗(yàn)成功的數(shù)據(jù)幀才會(huì)被解析并保存下來(lái),數(shù)據(jù)解析完之后最終的文本文件大小為850Kb左右。軟件解析結(jié)果見(jiàn)圖2。
圖2 數(shù)據(jù)解析結(jié)果
2.3Android串口通信方式的確定Android的串口通信解決方案有很多,如通過(guò)USB轉(zhuǎn)串口,藍(lán)牙轉(zhuǎn)串口,WiFi轉(zhuǎn)串口,主板自帶串口等方式。由于有線(xiàn)通信方式比無(wú)線(xiàn)通信方式(藍(lán)牙和WiFi轉(zhuǎn)串口)抗干擾能力更強(qiáng),數(shù)據(jù)傳輸更穩(wěn)定;再者USB轉(zhuǎn)串口需要購(gòu)買(mǎi)芯片并對(duì)其進(jìn)行編程,而主板自帶串口的可通過(guò)JNI技術(shù)直接實(shí)現(xiàn)串口通訊,所以最終選定的方案是平板自帶串口。
2.4后臺(tái)發(fā)送郵件的實(shí)現(xiàn)軟件是通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò)(GRPS和WiFi)將郵件發(fā)送到指定郵箱來(lái)傳送數(shù)據(jù)的。點(diǎn)擊發(fā)送郵件后,程序首先判斷Android平板當(dāng)前是否已經(jīng)打開(kāi)了數(shù)據(jù)網(wǎng)絡(luò),若沒(méi)有,則先跳轉(zhuǎn)到網(wǎng)絡(luò)設(shè)置界面,提示用戶(hù)打開(kāi)網(wǎng)絡(luò);有網(wǎng)絡(luò)的情況下則直接發(fā)送郵件;郵件發(fā)送過(guò)程中,在軟件界面(見(jiàn)圖3)會(huì)有進(jìn)度提示和耗費(fèi)時(shí)間等信息,并把進(jìn)度和結(jié)果信息寫(xiě)入到數(shù)據(jù)庫(kù)供查找分析。經(jīng)反復(fù)測(cè)試,850 Kb數(shù)據(jù)文本文件(.txt格式)在WiFi和GPRS情況下,郵件發(fā)送時(shí)間分別為4 s和180 s左右;在4G網(wǎng)絡(luò)下測(cè)試,發(fā)送時(shí)間只有10 s左右,發(fā)送時(shí)間在可接受的范圍內(nèi)。
圖3 郵件發(fā)送提示界面
2.5操作日志查詢(xún)操作日志的查詢(xún)需要用到數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù),在Android平臺(tái)上,集成了一個(gè)嵌入式數(shù)據(jù)庫(kù)—SQLite。SQLite是一款輕量級(jí)的關(guān)系型數(shù)據(jù)庫(kù),由于它占用的資源非常少,所以很多嵌入式設(shè)備都用SQLite來(lái)存儲(chǔ)數(shù)據(jù)。并且它支持Linux操作系統(tǒng),因此數(shù)據(jù)庫(kù)選擇SQLite。先在數(shù)據(jù)庫(kù)中建立表名為T(mén)ab_log的表,表中創(chuàng)建3列,分別為序號(hào)、時(shí)間、操作類(lèi)型。操作人員在每次讀取串口數(shù)據(jù)、解析數(shù)據(jù),發(fā)送郵件等操作都會(huì)把對(duì)應(yīng)的日志寫(xiě)進(jìn)SQLite數(shù)據(jù)庫(kù),管理員可按時(shí)間范圍、操作類(lèi)型等條件對(duì)操作記錄進(jìn)行查詢(xún)和刪除。操作日志界面見(jiàn)圖4。2.7發(fā)送文件格式的確定為了便于管理人員查看數(shù)據(jù),在平板前端形成文件時(shí)已經(jīng)對(duì)文件格式做了處理。即把譯碼完畢的數(shù)據(jù)寫(xiě)入到一個(gè)名為clw. txt的文本文件,相鄰二行數(shù)據(jù)用換行符( )隔開(kāi),而每一行數(shù)據(jù)中的相鄰列用制表符( )隔開(kāi),這樣Excel軟件就能夠自動(dòng)識(shí)別此格式并打開(kāi),定位和篩選數(shù)據(jù)等操作也變得非常簡(jiǎn)單。
圖4 操作日志查詢(xún)界面
圖5 設(shè)置界面
2.8工作流程圖軟件界面簡(jiǎn)潔,操作簡(jiǎn)單,具體工作流程見(jiàn)圖6。
圖6 工作流程圖
客列尾APP從2014年12月開(kāi)始研發(fā),經(jīng)過(guò)多次修改完善,于2015年8月開(kāi)始試驗(yàn),達(dá)到了預(yù)期效果,具有良好的推廣應(yīng)用前景。
中圖分類(lèi)號(hào):U298.1+2
文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1006-8686(2016)0.3-0046-03