全站仪双向通信及数据格式转换程序设计实现
打开文本图片集
摘 要:以索佳SET610型号全站仪为例,阐述了全站仪与计算机的双向通信方法、采集数据格式转换为CASS、SCS等数字化成图软件坐标文本格式及其它通用格式等自由转换方法及其程序设计实现。据此设计编制的数据传输与转换程序实际应用效果较好。
关键词:双向通信;指令;格式转换;程序设计
DOIDOI:10.11907/rjdk.151708
中图分类号:TP391 文献标识码:A 文章编号:1672-7800(2015)007-0149-04
0 引言
虽然GPS RTK技术已经普及,GNSS技术方兴未艾,但在实际工作中,全站仪仍在广泛应用。全站仪与计算机的通信及其数据在相关成图系统的应用一直是野外测绘数据采集[6]技术人员不可或缺的日常工作,数据传输与转换工具的稳定性、易用性、适用性等性能对测绘外业作业人员作业效率的提高有着较大影响。本文就全站仪与计算机的数据双向通信与多格式自动转换问题及其程序设计进行探讨,旨在为一线测量技术人员的外业作业提供实际帮助。
1 全站仪通信
全站仪通信的主要目的是对仪器进行控制并实现数据传输(下载、上传),通信技术包括有线通信、无线通信等。本文的全站仪通信是基于计算机串口接口的有线通信,也即基于计算机的COM口进行通信。目前,个人计算机主板已基本上不集成传统的COM物理接口,但是仍有大量全站仪设备的设计主要通过COM口进行通信,在计算机端通过USB-COM转换连接线安装USB接口,将其转换为COM接口,在操作系统设备管理器中安装相应设备,设置COM端口号进而实现串口通信。
2 全站仪双向通信原理及其控制指令集
全站仪的双向通信在本文指由计算机通过PC端数据传输软件获取全站仪的数据采集结果、设置值等数据(全站仪→计算机)和由计算机通过PC端数据传输软件向全站仪传输可接收的数据(计算机→全站仪),即由计算机发起自全站仪获取数据或向全站仪发送数据的计算机与全站仪之间的通信。
索佳全站仪在国内外测绘仪器市场一直是最具代表性的测绘仪器之一,其SET系列全站仪在各行业早已得到广泛应用。本文以索佳SET 610型号全站仪为例介绍全站仪的双向控制指令集,其它型号仪器指令(集)原理也相类似。
索佳全站仪双向通信指令分为3类:QP输入指令、输出指令和设置指令[1]。指令由计算机向全站仪发出,输出指令的执行结果由仪器向计算机输出数据,输入指令用于仪器接收来自计算机的数据。
通信程序设计中引用的几种主要指令[1]如下:①坐标数据输入指令如下“/Dg”:计算机向全站仪发出该指令可实现向全站仪输入附加于指令后的相应坐标数据,包括点号,应用于实际工作中常用于将已知点坐标或待放样坐标等数据通过计算机自动批量输入全站仪,为外业工作做好准备;②仪器参数设置(输入)指令“/B”;③仪器参数输出指令“B”;④斜距和角度值数据输出指令“Ea”;⑤距离和角度放样数据输入指令“/Db”;⑥距离和角度放样数据输出指令“Db”。
3 全站仪数据格式
SET系列全站仪输出到计算机的文本数据格式包括SDR2X、SDR33[2]等。SET610型号全站仪输出到计算机的数据采用SDR33格式。
SET 610型号全站仪输出的碎部点文件内容实例:
(直角坐标数据,部分)
00NMSDR33 V04-04.02 21-May-02 00:00 113111
10NMJOB9 121111
06NM1.00000000
01NM:SET600 V41-05 012053SET600 V41-05 01205331 0.000
03NM10.000
08TP 1554995.045 361537.028 -5.198 M
08TP 2554993.652 361535.873 -5.094 M
……(省略部分)
08TP 166555003.453 361598.453 2.801 M
00000
部分SDR33记录标志符格式含义如下[2]:
00NM,文件头标志
10NM,作业标识符记录标志
01NM,仪器型号、序列号等标志
03NM,观测目标详细记录标志
4 双向数据通信设置及程序设计
4.1 硬件准备
事先使用专用的通信线缆将全站仪(数据I/O插口)与计算机(USB转COM口<转接电缆>)连接好,打开并启动全站仪端及计算机端。
4.2 软件设置
在全站仪端找到通信参数设置功能,设置好数据通信参数、端口、传输速率、奇偶校验、数据位、停止位等,并选定需要下载的工作区文件(全站仪事先观测的有数据),使全站仪处于等待发送数据状态。
在计算机端启动传输软件,需先设置好数据通信参数、端口、传输速率、奇偶校验、数据位、停止位等,与全站仪端完全一致,通过计算机端传输软件打开通信端口,发送数据通信指令实现数据传输。
4.3 数据下载功能程序设计
传输软件以Microsoft公司经典的Visual BASIC 6.0开发平台进行程序设计实现[5]。使用了MSCOMM32.OCX通信控件对象。
将通信对象命名为AllStationComm。数据下载调用方法为AllStationComm.Input,实现全站仪工作区文件文本字符流的下载。
数据下载实现代码:
“
Open TargetFileYS For Output As #1
AllStationComm.PortOpen = True
AllStationComm.EOFEnable = True
buffer = ""
Do
buffer = buffer & AllStationComm.Input
Loop Until InStr(buffer,Chr(3))
Print #1,buffer
AllStationComm.PortOpen = False
Close #1
”
通过计算机端传输软件打开通信端口,发送数据下载指令实现数据下载。
下载的数据存放于TargetFileYS变量所指向的文本文件中。
4.4 数据上传功能程序设计
数据上传调用方法为AllStationComm. Output,该方法实现计算机向全站仪发送指令,全站仪将根据收到的指令内容完成相应工作,如接收计算机上传的数据等。
数据上传实现代码实例:
“
Open SourceFile For Input As #1
AllStationComm.PortOpen = True
Do Until EOF(1)
Line Input #1,outdata
i = InStr(outdata,",")
newout = "/Dg " + Mid(outdata,i + 1) + "," + Mid(outdata,1,i - 1)
AllStationComm.Output = newout + vbCrLf
Loop
AllStationComm.PortOpen = False
Close #1
”
以上代码的功能是通过重复发送"/Dg "指令将每行格式为点号及X、Y、H的坐标数据文件(变量SourceFile所指向的文件名)内容导入全站仪,即由计算机向全站仪自动输入点坐标。
5 数据转换算法及程序设计
5.1 下载源数据格式分析
下载源数据格式主要包括:
(1)碎部点直角坐标[6]格式。其标志符为“08TP”[2],每个点坐标为一行,以该标志符为起始字符串,后面是点名,X、Y、H坐标,点代码等[6],各占16个字符位。如:08TP 8554985.328 361530.196 2.471 M。除非引用的预先输入的起始点有误,一般无需关注测站信息。
(2)碎部点极坐标[6]格式。其标志符为“09F1”[2],每个点坐标为一行,以该标志符为起始字符串,后面是点名、斜距、天顶距、水平角、目标高、点代码等[6]。测站点、定向点、仪器高、检查点等信息由其它标志符标识。
(3)其它观测数据。其格式参照仪器指令参考手册。
5.2 数据格式转换算法
数据格式转换主要是对下载自全站仪的观测记录数据进行内容识别与格式转换,以便其转换结果被数字化成图软件、平差软件等第三方应用进行直接读取和后续处理。
算法设计以下载的地形碎部点采集数据的格式转换为例,直角坐标数据的转换结果包括测绘行业广泛使用的两种基于AutoCAD平台二次开发的数字化地形地籍成图与管理系统碎部点坐标文本数据格式,即开思SCS数据格式、南方CASS数据格式两种固定格式,以及自定义格式,极坐标转换目标格式为自定义格式。
5.2.1 碎部点数据开思SCS数据格式(*.dat)
开思SCS碎部点坐标数据格式[4]:
“
总点数
点名
点代码
Y坐标
X坐标
H高程
点名
…
”
根据下载的数据文件内容中有“08TP”标志符的行按照SDR33格式含义识别出点名,X、Y、H坐标,点代码等,按照开思SCS碎部点坐标数据格式排列内容输出,至于总点数则访问完源数据文件即可得出。
5.2.2 碎部点数据南方CASS数据格式(*.dat)
南方CASS碎部点坐标数据格式[3]:
“
总点数
点名,点代码,Y坐标,X坐标,H高程
点名,…
…
”
根据下载的数据文件内容中有“08TP”标志符的行按照SDR33格式含义识别出点名,X、Y、H坐标,点代码等,按照南方CASS碎部点坐标数据格式排列内容输出即可。南方格式中总点数在后期版本的定义中已取消,但成图软件仍向下兼容以前格式。
5.2.3 自定义格式
直角坐标数据的自定义格式转换,同样是根据下载的数据文件内容中有“08TP”标志符的行按照SDR33格式含义识别出点名,X、Y、H坐标,点代码等,确定好点名,X、Y、H坐标,点代码等排列顺序以及分隔符号,然后输出,如表1所示。
分隔符号自行选择,如“,”、空格、回车换行符等符号。
若识别的点名,X、Y、H坐标,点代码等初始顺序为①②③④⑤,按照开思SCS数据格式选择输出顺序则为①⑤③②④,即:
“
点名
点代码
Y坐标
X坐标
H高程
”
分隔符号为回车换行符。
极坐标数据的自定义格式转换与直角坐标数据的自定义格式转换相类似。
5.3 数据转换算法程序设计
5.3.1 界面设计
转换软件数据转换目标格式设置界面如图1所示。
5.3.2 程序实现
以直角坐标数据的自定义格式转换程序设计为例。
(1)设置界面上选定后确定保存的直角坐标输出顺序号代码:
“
colSort(0) = ComboZzb(0).ListIndex
...
colSort(4) = ComboZzb(4).ListIndex
”
点名,X、Y、H坐标,点代码等的设置输出顺序号保存在colSort数组中。
(2)按照选定的输出顺序号,对点名,X、Y、H坐标,点代码等重新进行排序:
“
myvar(0).myindex = colSort(0)
...
myvar(4).myindex = colSort(4)
myvar(0).mychr = dm
myvar(1).mychr = Trim(Ncord)
myvar(2).mychr = Trim(Ecord)
myvar(3).mychr = Trim(Zcord)
myvar(4).mychr = Trim(pubCode)
For i = 0 To 3
For j = i + 1 To 4
If myvar(i).myindex > myvar(j).myindex Then
h = myvar(i)
myvar(i) = myvar(j)
myvar(j) = h
End If
Next j
Next i
”
排序后的结果存放在myvar数组中,最终按序输出myvar数组的值即可满足要求。由于排序数据量极小,因此使用了简单的一般选择算法。
6 数据通信与转换程序应用
日常工作中,在进行全站仪野外地形碎部点数据采集前,于室内利用此传输程序上传已知控制点成果数据,做好外业数据采集准备工作。外业数据采集完毕后,在内业利用此传输程序下载数据并转换为所需要的文本数据格式如南方CASS数据格式等,即可在CASS系统中读入此坐标数据文件完成展点,以便进行下一步绘图工作。
此外,上传仪器参数设置、待放样坐标、下载观测数据等也是常用功能。
7 结语
其它品牌全站仪的通信原理大同小异,也都有自己的指令系统与文件格式,其双向通信及其数据格式转换的程序设计方法基本相同。
据此设计编制的数据传输与转换工具多年来一直在一线的实际项目中得到应用,效果良好。随着新平台、新技术、新接口等的发展,其在IOS、android、WPx等适时智能移动平台上实现则更加切合当今软硬件的发展及应用需求。
参考文献:
[1] 索佳测绘仪器贸易(上海)有限公司.索佳(SOKKIA)SET210、510、610电子全站仪使用说明书[R].日本株式会社索佳,V2.0-0503-500,2000.
[2] NIKON INSTRUMENTS INC.Nikon pulse laser station NPL-302 series instruction manual[R].Nikon Instruments Inc,H163E 05.10.TF.9,2001.
[3] 广州南方测绘仪器公司.南方CASS5.0数字化地形地籍成图系统参考手册[R].南方测绘仪器公司,2002.
[4] 广州开思测绘软件有限公司.SCS 2002G多用途数字化地形地籍测绘与管理系统用户手册[R].广州开思测绘软件有限公司,2002.
[5] 林永,张乐强.Visual Basic 6.0用户编程手册[M].第2版.北京:人民邮电出版社,2002.
[6] 武汉测绘科技大学《测量学》编写组.测量学[M].第3版.北京:测绘出版社,2000.
(责任编辑:孙 娟)