?

編程實現GPS手持機點位數據批量輸入

2020-06-08 08:50趙振華曲為貴劉仕剛劉鈞沅孔祥棟
新疆有色金屬 2020年1期
關鍵詞:批量數據包測點

趙振華 曲為貴 劉仕剛 劉鈞沅 孔祥棟

(天津華北地質勘查總院 天津 300170)

0 前言

利用GPS手持機進行地質、物探、化探進行測點測網的實際定位已成為地質工作的基本做法,在進行大面積測量工作時,大量的測點坐標信息要輸入到GPS手持機中,而MapSource軟件本身又沒有提供批量輸入測點坐標的方法,如果采用人工輸入既不能提高工作效率也不能保證數據的準確無誤,前人已總結出一套利用MapSource 的交換格式文件GPX實現批量輸入的方法[1-2],但還有一定的局限性,本文從另外一個途徑實現了更加靈活的方式來進行GPS測點數據的批量輸入,也為從軟件底層對手持GPS的開發提供了一種方式。本文的整體思路是,首先獲取MapSource 與GPS 手持機設備之間的通信方式及數據包格式,然后加載winUSB 驅動,最后通過編寫程序利用已有的數據格式對GPS手持機實現測點數據的批量輸入。

1 MapSource的通信方法及數據包格式

GPSmap60CSx 該型設備為使用較為廣泛的GPS設備,本文以該設備為研究對象,MapSource 為防止個人對GPS 內部存儲的數據屬性進行修改,其并沒有提供軟件接口實現對測點數據的批量輸入方式,Bus Hound 軟件是由美國Perisoft 公司研制的一種專用于PC 機各種總線數據包監視和控制的開發工具軟件[3],利用該軟件監控MapSource 驅動程序與GPS?map60CSx設備通信的數據包。

具體做法為在MapSource 航點屬性界面先輸入001(X:0,Y:0,H:0)的航點信息,同時打開Bus Hound軟件選擇要監控的設備并進行捕獲操作,這時在MapSource選擇軟件界面選擇發送到設備按鈕,等待數據傳送完畢后,Bus Hound軟件界面就會出現需要的信息,重復上述過程輸入002(X:10,Y:10,H:10)得到需要的信息。

通過對比航點屬性信息可以得到名稱屬性、X坐標、Y坐標和高程等信息在MapSource 軟件傳輸數據包中的位置。在MapSource 航點屬性輸入界面還包含有深度、溫度等其它屬性信息,通過上述方法也可一一獲取。

2 WinUSB驅動加載

WinUSB 是微軟公司提供的基于Windows 系統的USB 類設備驅動工具,其架構由內核模式驅動程序(Winusb.sys)和公開WinUSB 功能的用戶模式動態鏈接庫(Winusb.dll)組成。使用這些功能,可以通過用戶模式軟件管理USB 設備[4],Winusb.lib 和Winusb.dll提供應用程序層面的API接口函數。

安裝設備驅動程序需要提供INF文件,微軟公司提供了WinUSB.inf 文件模板,經過簡單修改就能應用到大部分的WinUSB類設備,主要是將設備的廠商識別碼(VID)和產品識別碼(PID)加入到INF 文件中。相關操作和介紹可以參考微軟的MSDN。

3 編寫應用程序寫入數據

由于地球曲率的影響,地理坐標并不能滿足地勘單位在施工時的需求,將地球上的點位坐標化算到平面稱之為地圖投影。地圖投影的方法有很多,我國目前多采用高斯投影—克呂格投影。為實現目前我國常用北京54和西安80坐標點位的批量輸入,需要將地理坐標(B,L,H)轉換為平面直角坐標系下的北京54 或西安80,實現該過程的方法為,首先利用簡化莫洛金斯基模型[5-7],將DX、DY、DZ、DA、DF轉換為DB和DL,然后將結果帶入高斯正算公式,最后得到需要的北京54或西安80坐標,將該過程代碼化以備后用。相關公式如下。

式(1)為簡化莫洛金斯基模型公式。

式(2)為高斯投影正算公式。

由于要用到Winusb 作為設備的驅動程序,考慮到兼容的問題需要用C、C++、Visual C++等語言進行應用程序編寫。程序要包含Winusb.h、SetupAPI.h頭文件,關聯Winusb.lib、SetupAPI.Lib 庫文件。微軟在NT4.0 后的操作系統里都提供了很多以Setup?DiXXXXX 開頭的函數,該系列函數提供了讀取設備信息和與設備通信的方法。SetupAPI.Lib 庫文件包含了SetupDiXXXXX 開頭的函數。程序的主要過程為應用SetupDiGetClassDevs、SetupDiDestroyDeviceIn?foList、SetupDiEnumDeviceInterfaces、SetupDiGetInter?faceDeviceDetail 等系列函數查找和定位到GPS?map60CSx 設備,通過CreateFile 函數獲得設備句柄,然后利用WinUsb_Initialize、WinUsb_QueryDeviceIn?formation、WinUsb_QueryPipe、WinUsb_QueryInterfac?eSettings 等系列函數獲取設備通信方式。在此就不羅列上述函數的使用方法,有意者可參見MSDN,最后通過WinUsb_WritePipe 函數對包裝好的數據包寫入GPSmap60CSx設備。

為驗證代碼是否可行,選擇與GPSmap60CSx 設備同公司產品LEGEND H 進行實驗操作,在記事本中依次編輯航點1、航點2、……航點12,隨機輸入以度為單位的坐標,運行代碼后會在LEGEND H 手持機中看到相關航點信息。

4 結論

本文結合地質、物探、化探工作中的實際問題,提出了另外一種實現GPS 數據批量寫入的方式,實現了相關的代碼,這種方式相對于GPX 交換文件形式更加靈活,能同時修改多種相關屬性等優點。

猜你喜歡
批量數據包測點
徐州市云龍公園小氣候實測與分析
二維隱蔽時間信道構建的研究*
批量精裝房項目工程信息管理綜述
云南:鐵路“520”運輸鮮花4萬余件 高鐵批量運輸創新高
基于CATIA的汽車測點批量開發的研究與應用
批量提交在配置分發中的應用
水下單層圓柱殼振動聲輻射預報的測點布置改進方法
民用飛機飛行模擬機數據包試飛任務優化結合方法研究
室外風環境實測及PHOENICS 模擬對比分析研究*
——以徐州高層小區為例
C#串口高效可靠的接收方案設計
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合