張林魏永
基于Android平臺的電網設備采集工具設計與實現(xiàn)?
張林魏永
(國網信通產業(yè)集團安徽繼遠軟件有限公司合肥230088)
隨著電網信息化的不斷深入,傳統(tǒng)的電網設備信息的采集方式越來越難以滿足信息的更新速度。對電網設備采集流程分析后,采用C/S架構并結合Android平臺的定位技術、識別技術和通信技術,設計并實現(xiàn)了電網設備采集工具。經過在項目中的實際應用,該采集工具能夠有效地提高采集效率和數(shù)據(jù)的準確性。
信息化;電網設備;Android;采集工具
Class NumberTP31
隨著電網信息化的不斷推進,電網設備的專業(yè)化管理需要完整的基礎信息作為支撐。所以,采錄電網設備的基礎信息成為推進電網信息化的重點工作[1]。這些基礎信息包括,電網設備的地理信息(精度、緯度、高程等)、唯一識別信息(條形碼或設備ID)、名稱、現(xiàn)場照片等。傳統(tǒng)的采集方式是:采集人員打印管理系統(tǒng)中已有的信息,攜帶RTK等測量設備以及照相機,去現(xiàn)場記錄相關設備的識別信息、地理信息和照片。等采集結束后,將相關數(shù)據(jù)整理成管理系統(tǒng)能識別的格式,然后錄入管理系統(tǒng)。在采集過程中,我們發(fā)現(xiàn)很多問題影響了采集的進度以及數(shù)據(jù)的一致性和準確性。
1)資產條形碼的的長度一般是22~26位,傳統(tǒng)的采集方式是手抄,這種方式極易抄漏和抄錯,影響數(shù)據(jù)的準確性[2]。
2)傳統(tǒng)的地理信息采集設備RTX等采集設備體積較大,攜帶不便,采集效率低。
3)對于同一電網設備往往要采集多種類型數(shù)據(jù),采集完后需要匯總整理,傳統(tǒng)方式采用人工整理的方式效率低下。
可見,如果要提高電網設備的采集效率,就必須對現(xiàn)有的采集流程進行分析,針對其中關鍵的流程進行改進。
電網數(shù)據(jù)采集部分是本工具的核心部分,對于移動客戶端數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)釆集模塊的交互性關乎到現(xiàn)場采集人員的工作效率。移動客戶端數(shù)據(jù)采集系統(tǒng)的釆集流程設計要求“簡便、快速響應”,按照“先地理信息后業(yè)務屬性”的要求進行了詳細設計,并地理信息和業(yè)務屬性信息的獲取設計了詳細具體的操作流程,圖1展現(xiàn)了電網設備信息采集的整體流程。
圖1 采集流程圖
1)確定被采集設備的唯一識別信息一般為設備ID,設備ID一般由計量部門統(tǒng)一給出或者按照各地的生成規(guī)則產生。如果現(xiàn)場沒有設備ID的標識,則需要從預置文件中選擇一個作為該設備的唯一標識,預置文件需要提前存儲到移動終端中。設備ID是該電網設備在各應用系統(tǒng)中的唯一識別信息。
2)采集設備的地理信息數(shù)據(jù),根據(jù)設備的平面投影特征通常的分為三種類型,點、線和面。其中,點類型需要獲取一個位置坐標點信息,線類型需要獲取兩個或兩個以上位置點的坐標點信息,面類型需要獲取三個或三個以上位置點,然后進行計算和轉化[3]。
3)相關業(yè)務屬性錄入,業(yè)務屬性數(shù)據(jù)包括普通業(yè)務屬性和多媒體屬性,普通業(yè)務屬性有設備材質、生產日期、容量等,多媒體屬性一般為設備各個角度的照片,如全貌、銘牌等。普通屬性信息現(xiàn)場填寫,照片在拍攝完成后添加描述信息。
4)當一個設備相關數(shù)據(jù)全部采集完后,可將數(shù)據(jù)通過網絡立即上傳到服務端,也可以先保存在本地,等采集工作完成后將整個相關數(shù)據(jù)導出,然后上傳到服務端[4]。
根據(jù)對采集流程的分析,同時為了與供電公司數(shù)據(jù)管理系統(tǒng)進行對接,采集工具的總體架構設計如圖2所示所示。
圖2 總體架構圖
采集工具的完整系統(tǒng)由三大部分組成,分別是移動客戶端、服務端和網絡客戶端。其中,服務端和網絡端只需要在現(xiàn)有的供電公司現(xiàn)有的數(shù)據(jù)管理系統(tǒng)的基礎上進行功能擴展即可。移動客戶端和服務端之間是采用C/S架構,同時網頁客戶端和服務端之間是采用B/S架構[5]。移動客戶端包括數(shù)據(jù)庫操作組件、定位組件和通信組件等,具備獲取和存儲設備地理信息、業(yè)務屬性和多媒體屬性數(shù)據(jù)的能力。移動客戶端在完成數(shù)據(jù)采集后,可以通過各大運行商的移動通信網絡立即提交或離線導出后通過網頁客戶端直接將數(shù)據(jù)導入遠程服務端數(shù)據(jù)庫,實現(xiàn)同步[6]。
根據(jù)對采集流程的分析和系統(tǒng)總體架構的設計,移動客戶端的功能從邏輯上劃分為五個功能模塊:用戶登錄模塊、應用設置模塊、數(shù)據(jù)釆集模塊、數(shù)據(jù)編輯模塊、數(shù)據(jù)提交模塊,如圖3所示。
1)用戶登錄模塊:用戶登錄模塊的作用是在用戶登錄后,根據(jù)后臺反饋的用戶信息,確定用戶的使用權限以及存儲采集數(shù)據(jù)的本地數(shù)據(jù)庫等信息。只有在服務端預先授權的用戶,才能順利登錄并使用移動客戶端[7]。
圖3 移動客戶端邏輯結構圖
2)應用設置模塊:應用設置模塊的作用是讓用戶根據(jù)采集現(xiàn)場和Android設備的配置情況設置客戶端的相關參數(shù),如定位模式設置、數(shù)據(jù)傳輸設置,預置數(shù)據(jù)選擇設置等。定位模式設置是讓用戶選擇是使用基于GPS的定位還是基于移動運營商的基站的定位或者同時使用。數(shù)據(jù)傳輸設置是設置后臺服務端的IP地址和端口號,為數(shù)據(jù)的上傳做準備[8]。預置數(shù)據(jù)選擇設置是選擇用戶事先拷入客戶端中的數(shù)據(jù),如現(xiàn)場的用電計量箱沒有唯一識別信息和名稱,則可以從事先預置的信息中選擇一個使用。
3)數(shù)據(jù)采集模塊:數(shù)據(jù)采集模塊是采集現(xiàn)場設備的相關信息,包括地理信息采集,業(yè)務屬性信息采集和多媒體信息采集。其中,地理信息采集是利用Android設備的定位服務確定當前所采集的地理信息并存儲。業(yè)務屬性信息采集是記錄設備ID、設備材質、生產日期、生產廠商、所屬用戶、容量等信息。如果設備ID是條形碼或者二維碼則使用Android設備的攝像頭掃描讀取[9],減少人工抄錄出現(xiàn)錯誤的機率。多媒體信息采集是使用Android設備的拍攝設備的全貌、銘牌等主要信息并保存。
4)數(shù)據(jù)編輯模塊:數(shù)據(jù)采集模塊是對已采集設備的相關信息進行增、刪、改、查,包括地理信息編輯、業(yè)務屬性信息編輯和多媒體數(shù)據(jù)編輯。
5)數(shù)據(jù)提交模塊:數(shù)據(jù)提交模塊是將已采集的數(shù)據(jù)提交到服務端,包括數(shù)據(jù)在線提交和數(shù)據(jù)導出。數(shù)據(jù)在線提交是通過網絡,在成功連接后臺服務端后,將數(shù)據(jù)在線提交[10]??紤]到采集的數(shù)據(jù)量較大,通常以單個設備的信息為單元進行傳輸。在網絡狀況不佳或數(shù)據(jù)量較大的情況下,可以使用數(shù)據(jù)導出功能,將數(shù)據(jù)從Android設備中導出,然后通過網頁客戶端同步到服務端。
本系統(tǒng)移動客戶端的開發(fā)環(huán)境為JDK 1.7和 Android Studio 2.0,適配Android 2.3及更高版本。
1)用戶登錄模塊:這個模塊主要就是利用An?droid自帶的SQLiteOpenHelper數(shù)據(jù)庫幫助類來實現(xiàn)對SQlite數(shù)據(jù)庫的操作,實現(xiàn)保存和讀取用戶信息[11]。
2)應用設置模塊:對于定位模式設置,Android系統(tǒng)提供了GPS定位和基站定位兩種方式。若要使用GPS定位,通過調用LocationManager類獲取和更新地理位置信息[12]。
SBgpsLocationManager=(LocationManager)myContet.getSys?temService(Context.LOCATION_SERVICE);
Location SBgpsLocation=SBgpsLocationManager.getLast?KnownLocation(LocationManager.GPS_PROVIDER);
SBgpsLocationManager.requestLocationUpdates(SBLocation?Manager.GPS_PROVIDER,MINTIME,MININSTANCE,SB?locationListener);
使用基站定位時,調用SDK中的API(Tele?phonyManager)獲得MCC(移動國家代碼)、MNC(移動網絡號碼)、LAC(位置區(qū)域碼)、CID等信息(基站編號,是個16位的數(shù)據(jù)),然后通過google的API獲得所在位置的經緯度,最后再通過google map的API獲得設備當前地理位置。
TelephonyManager SBTelNet=(TelephonyManager)getSys?temService(Context.TELEPHONY_SERVICE;
GsmCellLocation SBlocation=(GsmCellLocation)SBTelNet. getCellLocation();
if(SBlocation==null){throw new Exception(“error,can not getany infomation”);}
String SBoperator=SBTelNet.getNetworkOperator();
int SBmcc=Integer.parseInt(SBoperator.substring(0,3));int SBmnc=Integer.parseInt(SBoperator.substring(3));int SBcid=SBlocation.getCid();
int SBlac=SBlocation.getLac();
對于數(shù)據(jù)傳輸設置,主要是設置根據(jù)服務端的部署環(huán)境,設置服務端的IP地址和端口,將設置完的信息保存是利用Android系統(tǒng)的SharedPreferenc?es類。SharedPreferences類是一個輕量級的存儲類,特別適合保存軟件的配置參數(shù)。如果要獲取信息,可以直接讀取文件。如要修改和存儲信息,則要先用edit()函數(shù)將文件變?yōu)榫庉嫚顟B(tài)。
存儲數(shù)據(jù)信息:
SharedPreferences SBsharedPreferences=getSharedPrefer?ences(“configuration”,0);//打開
SharedPreferences.Editor Conneditor=SBsharedPreferences. edit();//設置文件為編輯狀態(tài)
Conneditor.putString(“ip”,“默認IP”);//存入ip Conneditor. putString(“port”,“默認端口”);//存入端口Conneditor.com?mit();//提交數(shù)據(jù)。讀取數(shù)據(jù)信息:
SharedPreferences SBsharedPreferences=getSharedPrefer?ences(“configuration”,0);//打開
String Servip=SBsharedPreferences.getString(“ip”,“192.168.0.1”);//讀取ip
String Servport=SBsharedPreferences.getString(“port”,“8081”);//讀取端口
對于預置數(shù)據(jù)選擇設置和數(shù)據(jù)編輯模塊主要是SQLite數(shù)據(jù)庫進行導入和編輯操作。以excel文件為例,使用Workbook工具類讀取excel文件的內容,然后使SQLiteOpenHelper將數(shù)據(jù)寫入SQLite數(shù)據(jù)庫中。
InputStream SBis=context.getAssets().open(“prefer_informa?tion.xls”);
Workbook SBbook=Workbook.getWorkbook(SBis);SBbook. getNumberOfSheets();
Sheet SBsheet=SBbook.getSheet(0);//獲得第一個設備工作表對象intSBRows=SBsheet.getRows();
for(inti=1;i<SBRows;++i){//讀取設備信息
String SBname=(SBsheet.getCell(0,i)).getContents();
String SBID=(SBsheet.getCell(1,i)).getContents();
String SBaddress=(SBsheet.getCell(2,i)).getContents();}
寫入數(shù)據(jù)庫使用insert()函數(shù)。
SQLiteDatabase mydb=myDBHelper.getWritableDatabase();try{ContentValues SBvalues=new ContentValues();
SBvalues.put(“SBname”,SBinfo.getContent());
SBvalues.put(“SBID”,SBinfo.getPhonetic());
SBvalues.put(“SBaddress”,SBinfo.getProperty());mydb.insert(myDBHelper.TABLE_SB_INFO,null,val?ues);}catch(SQLiteException e){Log.e(“error”,EXCEP?TION,e);
}catch(Exception e){Log.e(“error”,EXCEPTION,e);}
finally{if(mydb!=null){mydb.close();}}
對于SQLite數(shù)據(jù)庫的數(shù)據(jù)刪除使用delete()方法,查詢使用query()方法,修改使用update()方法。
3)數(shù)據(jù)采集模塊:對于地理信息的采集可以根據(jù)定位模式設置的選項調用相應的API獲得地理坐標并保存。
業(yè)務屬性的采集中,對于設備唯一標識是條形碼或者二維碼的情況,可以使用ZXing類庫,ZXing是一個開源Java類庫用于解析多種格式的條形碼和二維碼[13]。以圖4掃描條形碼為例,主要是利用MultiFormatReader類讀取條形碼信息。
String SBimgPath=“content://SBmedia/image/SBimg01.jpg/”;ZxingEAN13DecoderHandler SBinfohandler=new ZxingE?AN13DecoderHandler();
String decodeContent=SBinfohandler.decode(SBimgPath);
圖4 移動客戶端掃描條形碼示例
對于多媒體信息的采集,直接調用系統(tǒng)默認相機,在觸發(fā)事件后添startActivityForResult(new In?tent(MediaStore.ACTION_IMAGE_CAPTURE),1);其中參數(shù)MediaStore.ACTION_IMAGE_CAPTURE是調用系統(tǒng)相機用的,而后面的1則是請求的Ac?tivity的標志,用來處理返回結果。拍完照后,利用設備的唯一標識為照片命名。
4)數(shù)據(jù)編輯模塊主要是對SQLite數(shù)據(jù)庫的操作,參考預置數(shù)據(jù)選擇設置。
5)數(shù)據(jù)提交模塊對于在線數(shù)據(jù)提交主要是利用HTTP協(xié)議傳輸數(shù)據(jù),采用Java接口HttpURL?Connection的post方法實現(xiàn)與服務端交互,實現(xiàn)數(shù)據(jù)同步。
String usname=EdTxt_usname.getText().toString();String pwd=EdTxt_pwd.getText().toString();
Map<String,String>info=new HashMap<String,String>();//編輯登錄信息。
info.put(“usname”,usname);info.put(“pwd”,pwd);//設置提交數(shù)據(jù)的方式。
httpURLConnection.setRequestMethod(“POST”);//設置不使用緩存。
httpURLConnection.setUseCaches(false);
//設置鏈接請求的類型和長度。
httpURLConnection.setRequestProperty(“Content-Type”,“application/x-www-form-urlencoded”);httpURLConnec?tion.setRequestProperty(“Content-Length”,String.valueOf(SBdata.length));
//解析信息數(shù)據(jù)
byte[]Conndata=getRequestData(info,encode).toString(). getBytes();
//獲得輸出流,像服務端傳輸數(shù)據(jù)。
OutputStream outputStream=httpURLConnection.getOutput?Stream();
outputStream.write(Conndata);
對于數(shù)據(jù)導出則是在SQLite數(shù)據(jù)庫中查到需要導出的數(shù)據(jù),然后使用Workbook工具類的createSheet方法新建一個文件,然后寫入數(shù)據(jù)并保存[14],如圖5是一個導出結果示例。
圖5 采集數(shù)據(jù)導出示例
電網設備采集工具在研發(fā)完成后,先后在遼寧、安徽、甘肅等省的地市供電公司營銷和運檢營配貫通項目中進行了廣泛的推廣和使用。通過與之前使用傳統(tǒng)采集方式相比,采集效率提高了約30%,同時數(shù)據(jù)的準確性都有很明顯的提高,達到了設計的目標[15]。同時,在實際的使用中,也有收到一些改進建議,如增加預置數(shù)據(jù)模板種類等,將應用在下一步的優(yōu)化工作中改進。
[1]曹旋,李國兵.營配調貫通低壓數(shù)據(jù)采錄探討[J].大眾用電,2016(3):17-18.
CAO Xuan,LI Guobing.Discussion on Acquisition and Distribution of Low Pressure Data in through the camp[J]. Popular Utilization of Electricity,2016(3):17-18.
[2]黃小英.基于圖象的條形碼識別的算法研究及設計[J].電子技術,2011(5):21-22.
HUANG Xiaoying.The Study and Design of Barcode Rec?ognition Algorithm Based on Image[J].Electronic Tech?nology,2011(5):21-22.
[3]黃繼生.GPS技術在土地面積測繪中的應用研究[J].科技資訊,2014(8):45.
HUANG Jisheng.Application of GPS Technology in Land Surveying and Mapping[J].Science&Technology Infor?mation,2014(8):45.
[4]楊竣輝,黃嬋.基于B/S的數(shù)據(jù)上傳技術的實現(xiàn)[J].計算機時代,2008(6):61,63.
YANG Junhui,HUANG Chan.Implementation of Data Up?load Technology Based on B/S[J].Computer Era,2008(6):61,63.
[5]陳旭清.基于Web服務的數(shù)據(jù)上傳[J].山西青年管理干部學院學報,2005(4):76-78.
CHEN Xuqing.Data Upload Based on Web Services[J]. Journal of Shanxi College For Youth Administrators,2005(4):76-78.
[6]李姝慧.EXCEL在測試數(shù)據(jù)上傳中的應用[J].信息系統(tǒng)工程,2014(12):76.
LI Shuhui.The Application of EXCEL in Test Data Up?load[J].China CIO News,2014(12):76.
[7]諸姣,李宏偉,彭鑫,等.安卓應用系統(tǒng)的功能與權限相關性研究[J].計算機應用與軟件,2014(10):27-33.
ZHU Jiao,LI Hongwei,PENG Xin,et al.Research on the Relationship between the Function and Authority of An?droid Application System[J].Computer Applications and Software,2014(10):27-33.
[8]馬昭征.基于HTTP的安卓與服務器交互方法的實現(xiàn)[J].無線互聯(lián)技,2015(3):92-96,114.
MA Zhaozheng.Implementation of Interactive Method be?tween Android and Server Based on HTTP[J].Wireless Internet Technology,2015(3):92-96,114.
[9]汪永松.安卓手機APP開發(fā)之基于位置的信息分享終端[J].電腦編程技巧與維護,2014(7):32-39.
WANG Yongsong.Android mobile phone APP develop?mentbased on the location ofinformation-sharing terminal[J].Computer Programming Skills&Maintenance,2014(7):32-39.
[10]馬明建.數(shù)據(jù)采集與處理技術[M].西安:西安交通大學出版社,2005.
MA Mingjian.Data acquisition and Processing Technolo?gy[M].Xi'an:Xi'an Jiao Tong University Press,2005.
[11]王冠宇,關永,趙冬生.JAVA在SQLite嵌入式數(shù)據(jù)庫中的應用[J].微計算機信息,2006(2):94-95,226.
WANG Guanyu,GUAN Yong,ZHAO Dongsheng.The Application of JAVA in SQLite Embedded Database[J]. MicrocomputerInformation,2006(2):94-95,226.
[12]黃藝,胡善岳,何芊,等.基于Android平臺的移動通訊設備的GPS定位研究[J].激光雜志,2014(3):42-44.
HUANG Yi,HU Shanyue,HE Qian,et al.Research on GPS Location of Mobile Communication Equipment Based on Android Platform[J].Laser Journal,2014(3):42-44.
[13]閔孝忠,朱林立,習海旭,等.基于QR碼簽章技術的研究與設計[J].控制工程,2015(6):1171-1174.
MIN Xiaozhong,ZHU Linli,XI Haixu,et al.Research and Design of Signature Technology Based on QR Code[J].Control Engineering of China,2015(6):1171-1174.
[14]陳書堂,王祥,石志峰,等.JAVA如何讀取EXCEL文件[J].科技情報開發(fā)與經濟,2004(1):186-188.
CHEN Shutang,WANG Xiang,SHI Zhifeng,et al.How to read EXCEL file using JAVA[J].Sci-Tech Informa?tion Development&Economy,2004(1):186-188.
[15]梁波,宋全義,張健康.營銷GIS建設對營配貫通的有益實踐[J].國網技術學院學報,2016(2):19-23.
LIANG Bo,SONG Quanyi,ZHANG Jiankang.The Bene?ficial Practice of Marketing GIS on Marketing and Pro?duction System[J].Journalof State Grid Technology Col?lege,2016(2):19-23.
Design and Implementation of Power Grid Equipment Acquisition ToolBased on Android Platform
ZHANG Lin WEI Yong
(SGITG Anhui Ji Yuan Software Co.,Ltd,Hefei 230088)
With the continuous development of the informatization of the power grid,the traditional way of acquiring equip?ment information is more and more difficult to meet the update speed.The power grid equipment acquisition tool are designed and implemented using C/S architecture and positioning technology,identification technology and communication technology based on Android platform after analyzing the process of power grid equipment acquisition.Through the practical application in the project,the acquisition toolcan effectively improve the collection efficiency and accuracy ofdata.
informatization,powergrid equipment,Android,acquisition tool
TP31
10.3969/j.issn.1672-9722.2017.08.047
2017年2月8日,
2017年3月30日
張林,男,碩士,助理工程師,研究方向:電網信息化、數(shù)據(jù)處理與分析、Android平臺應用軟件。魏永,男,碩士研究生,助理工程師,研究方向:信息化應用。