張海忠,曹解放,劉雪瑞,韓雪峰,段自立
(61365部隊,天津 300140)
GNSS接收機接口語言(GRIL)是一種特定的接口語言,它具有獨立于接收機的語言結(jié)構(gòu),同時定義了豐富的命令、消息和字段[1]。利用這些元素的有機組合,通過串口、并口、USB、藍牙及以太網(wǎng)等通信模式可以實現(xiàn)與Topcon GNSS接收機的交互,以達到操控接收機的目的,并獲取接收機的狀態(tài)參數(shù)和功能。
目前TONCON GNSS接收機主要通信工具為PCCDU,可以完成接收機參數(shù)的讀取和設(shè)置及觀測數(shù)據(jù)的下載[2-3],但其不具備人機交互界面,用戶無法實時了解衛(wèi)星分布等信息,對一些特殊功能只能通過發(fā)送GRIL命令的方法實現(xiàn),對于不熟悉GRIL命令的作業(yè)人員難度較大。本文簡要介紹GRIL命令,并通過串行模式使用C#編程實現(xiàn)Topcon GNSS接受機通信控制,為不同的GNSS野外測量需要提供參考[4]。
GRIL的功能涵蓋面十分廣,涉及接收機的每個操作和參數(shù)。它靈活的語言方式可以實現(xiàn)對接收機的自動及手動控制。通過編輯命令列表,并指定接收機在指定的時間運行這個列表就可以實現(xiàn)接收機的自動控制功能;手動控制則是通過控制終端把相應(yīng)命令發(fā)送到接收機就能完成。GRIL包括以下七項主要功能,如表1所示。
表1 GRIL主要功能
GRIL共定義12種命令,通過向接收機發(fā)送不同命令,可以實現(xiàn)從接收機主板信息到衛(wèi)星狀態(tài)查詢,以及對測量狀態(tài)完全控制,如表2所示。
表2 GRIL的12種命令語句
(續(xù)表)
GRIL命令語句格式如下:
[%ID%][COMMAND][@CS]
其中,方括號表示可選字段,各字段之間允許存在空格,一條命令最長支持高達256個字符長度。
%ID%:聲明的標識符,其中ID表示任意字符串,也可以為空。響應(yīng)消息中的完全拷貝此標識符,語句僅包含一個標識符也是允許的,在這種情況下只生成一個響應(yīng)消息。
COMMAND:執(zhí)行命令的參數(shù)列表,第一個元素被稱為命令名(可以為空),它表示要執(zhí)行的動作;中間的元素是命令參數(shù);最后是參數(shù)的值(可缺省)。命令參數(shù)為單個根節(jié)點逐級向上的樹形層次結(jié)構(gòu),中間用反斜杠(/)用做節(jié)點間的分隔符,這種組合方式與電腦中文件夾存放文件的形式相似。
@CS:校驗為了確保發(fā)送和接收的數(shù)據(jù)正確,它進行CRC8或CRC16校驗。
EOC:命令終止符,由回車(CR)、換行(LF)或兩者結(jié)合使用。
示例:
發(fā)送:%RAM%print,/par/rcv/mem
接收:RE00C%RAM% 4096
在C#中使用timer及serialPort控件,timer控件提供Tick事件用于發(fā)送GRIL命令,SerialPort類提供的DataReceived事件用于接收數(shù)據(jù)。當SerialPort對象接收緩沖區(qū)有數(shù)據(jù)時,將在輔助線程上引發(fā)DataReceived事件[5-6]。
不同的操作對應(yīng)GRIL命令及返回數(shù)據(jù)不同,需要編寫對應(yīng)的DataReceived事件及數(shù)據(jù)處理方法。當進行新的操作時,采取事件輪轉(zhuǎn)的方式通過注銷舊事件,注冊相應(yīng)操作的新事件進行通信控制。流程圖如圖1所示。
圖1 通信控制流程圖
//發(fā)送GRIL命令
private void timer_base_Tick(object sender,EventArgs e)
{
//發(fā)送GRIL命令
//判斷是否接收發(fā)送
//發(fā)送異常處理
}
//接收數(shù)據(jù)并處理
private void serialPort_base(object sender,
SerialDataReceivedEventArgs e)
{
//接收數(shù)據(jù)
//數(shù)據(jù)檢查處理
//超時異常處理
}
//用戶新操作
privatevoid tabControlSelectedIndexChanged (object sender,EventArgs e)
{
//注銷舊事件、注冊新事件
//發(fā)送命令
}
通過串口向Topcon NET-G3A接收機發(fā)送命令,獲取國際海事電子協(xié)會(NMEA)數(shù)據(jù)信息,實現(xiàn)衛(wèi)星狀態(tài)的圖形化顯示。如圖2所示。
圖2 星空圖
Topcon NET_G3A接收機為用戶提供了兩種測量模式:常規(guī)測量和預(yù)約測量。常規(guī)測量是指通過手動操控讓接收機執(zhí)行開關(guān)機和記錄觀測數(shù)據(jù);預(yù)約測量是通過發(fā)送GRIL命令列表,讓接收機在指定的時間執(zhí)行指定的操作。預(yù)約測量可以實現(xiàn)接收機無人值守自動控制,特別適用于多時段觀測。預(yù)約測量模式如圖3所示。
圖3 測量控制
使用GRIL命令通過C#編程可以開發(fā)專用的Topcon接收機控制程序。程序搭載在電腦等設(shè)備上,實現(xiàn)與接收機的接口通訊,能夠執(zhí)行參數(shù)設(shè)置、開關(guān)機等任務(wù),針對高等級GNSS測量任務(wù)進行預(yù)約測量,可以實現(xiàn)GNSS接收機無人值守自動觀測,有效地提高野外數(shù)據(jù)采集效率,為用戶提供了更高效便捷的解決方案,滿足不同測量任務(wù)的需要。
[1]TOPCON.TOPCON GRIL reference manual[EB/OL].http://www. topconpositioning.com.
[2]TOPCON.PC_CDU 參考手冊[EB/OL].http://www.topcon.com.cn.
[3]TOPCON.NET_G3A 使用手冊[EB/OL].http://www.topcon.com.cn.
[4]地殼運動監(jiān)測工程研究中心.地殼運動監(jiān)測技術(shù)規(guī)程[M]. 北京: 中國環(huán)境出版社,2014.
[5]NAGEL C,EVYEN B,GLYNN J. Professional C# 4 and.NET 4; C#高級編程[M].7 ed.李銘譯,北京:清華大學(xué)出版社,2010.
[6]王小科,王 軍. C# 開發(fā)實戰(zhàn)1200例(第Ⅱ卷)[M].北京:清華大學(xué)出版社,2011.