基于AUTOCAD的北斗定位数据接收模块的设计与实现*

2012-12-26 07:46马怀武王俊强郝恒强
地矿测绘 2012年2期
关键词:二次开发串口北斗

马怀武,王俊强,郝恒强,陈 波

(1.68029部队 ,甘肃 兰州 730020;2.68011部队 ,甘肃 兰州 730020)

基于AUTOCAD的北斗定位数据接收模块的设计与实现*

马怀武1,王俊强1,郝恒强1,陈 波2

(1.68029部队 ,甘肃 兰州 730020;2.68011部队 ,甘肃 兰州 730020)

在AUTOCAD平台的基础上,通过二次开发,增加北斗接收机定位数据接收及处理模块,可以快速采集CGCS2000坐标系下的定位数据,达到快速更新地图数据的目的。据此,采用C#语言在AUTOCAD平台上设计了北斗定位数据的接收及处理模块,并实现了数据的接收及实时处理。

Serialport通信;NMEA-0183协议;CASS符号库;AUTOCAD

0 引言

目前,随着CGCS2000国家大地坐标系的启用,我国正在加速更新地图数据成果,国家要求用8-10年时间,完成现有的各类基础测绘成果和基础地理信息数据库的坐标系向CGCS2000国家大地坐标系的过度和转换[1],转换后部分数据需要实际测量检测更新,而当前地图数据的野外获取多数采用的是GPS定位数据,自主独立性不高,随着我国正在加速建设自主研制的北斗卫星导航系统,采用北斗定位数据更新地图成果将能更好发挥独立自主的优势。目前北斗卫星导航系统已经能够为我国及周边范围提供实现实时无源定位,北斗卫星导航系统采用的是CGCS2000国家大地坐标系,定位精度目前能够达到10 m,随着系统建设的完善,精度将会得到进一步提高。在AUTOCAD平台基础上,可以设计实现北斗定位数据接收及实时处理模块。

1 定位数据接收及处理模块的设计与实现

1.1 二次开发环境的简介

北斗定位数据接收及处理模块是在ATUOCAD平台的基础上采用C#语言编程实现的。早期的AUTOCAD二次开发语言主要有LISP语言、C++语言、VBA语言,从AUTOCAD 2006开始,Autodesk为其开发增加了.NET API。.NET API提供了一系列托管的外包类,使开发人员可在.NET框架下,使用任何支持.NET的语言,如 VB.NET、C#和 Managed C++等对 AUTOCAD进行二次开发[2]。.NET API与传统 ObjectARX 的区别主要源于在.NET环境下开发应用程序与在VC环境下开发应用程序的区别,在VC环境下,程序员需要自己管理内存的申请和释放,而.NET框架自行判断内存回收的时机并实行回收,从而解决了C++内存泄漏问题,是较理想的AUTOCAD二次开发工具。

在与北斗接收机进行数据交换采用的是串口通信方式,利用.NET框架下的Serialport串口通信类[3]编程可方便实现所需要串口通讯的多种功能。

1.2 北斗定位数据概述

北斗卫星导航定位系统是我国自主研制的卫星导航定位系统,空间星座部分由5颗GEO卫星和30颗非GEO卫星构成,还正处于组网建设阶段,建设完成后能够在全球范围内提供实时无源定位,目前在中国及周边范围内能够提供全天候无源定位。

北斗接收机也采用美国国家海洋电子协会制定的NMEA-0183协议通信。NMEA0183规定的数据,采用ANSI标准,以串口非同步传送[4]。协议规定每条语句都以字符“$”为起始标识符,其后紧跟5个ASCII字符的地址域值,然后是以域分隔符“,”分隔开的若干数据域和一个校验域,最后以回车换行符(CRLF)作为语句结束标识符。北斗接收机常用语句有GSA、GGA、ZDA、GSV、RMC等。以BDGGA数据为例,其格式如表1所示。

表1 BDGGA数据格式Tab.1 Data format of BDGGA

1.3 模块设计的思路

建立数据实时接收及处理模块,是在串口读取北斗定位信息的基础上,对定位信息进行选择性提取,再对提取的信息实时处理,具体流程,如图1所示。

图1 北斗定位数据接收及处理模块的设计流程Fig.1 Flow chart of design of big dipper positioning data receiving and processing module

模块设计的思路按照图1所示,采集北斗定位数据前,应先串口连通北斗卫星定位接收机,在AUTOCAD中增加北斗定位数据接收模块,用于实时接收北斗定位数据;采集的数据即存为.dat格式,也在ATUOCAD绘图窗口中进行实时标注点位信息,然后可以利用CASS符号库对相应点位附上符号属性[5]从而完成数据的采集与图形的绘制工作。采集点位信息具备单击鼠标采集和按时间间隔采集两种方式(采集成功的条件是卫星数大于4,且DOP值小于6),在采集更新点状地物时一般采用单击采集方式,而在比较空旷的地方,采集更新线状地物时可以采用按时间间隔采集方式。两种方式各具特点,根据不同的环境灵活使用,可以提高效率。

2 编程实现

通过Serialport串口通信类编程可以实时提取BD定位信息。首先要编程实现Serialport串口通信参数设置,才能同步读取定位信息。读取北斗定位数据是在AUTOCAD标绘点位信息的前提,其关键代码如下:

采用上述代码能够实现在AUTOCAD绘图窗口中实时标记点位信息,并通过CASS符号库编辑地物信息。利用timer控件,并设置timer1_Tick事件可以按时间间隔方式采集定位信息,在宽阔无遮挡的地域,采用按时间间隔自动存储方式采集道路信息,能提高工作效率。

图2是在AUTOCAD中设计的一个点地物采集界面,可实时查看当前位置以及精度因子情况,通过投影参数设置,数据源文件新建或打开,就可在基于AUTOCAD平台以及CASS符号库的基础上,对地图数据进行实时采集更新,并可对采集的数据进行查看编辑。

图2 数据采集查看界面Fig.2 The interface of collecting and viewing of data

设计北斗定位数据接收及处理模块有助于更新地图数据,尤其是对导航电子地图道路网的更新,具有一定的参考价值。图3是实际采集了一个加油站及道路的某段,通过CASS符号库将采集的信息赋予相应符号属性。

图3 实际采集效果Fig.3 The effect of the actual collecting

3 结束语

本文设计了北斗定位数据的接收模块并实现了数据的实时处理,在更新导航电子地图中,可以较好的运用到道路网的更新上,具有效率高的特点。随着北斗卫星导航系统空间卫星数的增多,地面差分站建设的完善,以及测量型北斗接收机的普及,北斗定位精度将得到较大提高,届时,该方法将可以运用到大比例尺地形图的更新上。

[1]国家测绘局.关于印发《启用2000国家大地坐标系实施方案》的通知[Z].北京:国家测绘局,2008.

[2]李冠亿.深居浅出 AUTOCAD二次开发[EB/OL].http://www.BimCad.org.

[3]翟希述,王宝兴,范淼.基于Visual C#的串口通讯程序设计[J].电子科技,2011,24(2):24 -26.

[4]李建文,李军正.卫星导航原理与应用[M].郑州:解放军信息工程大学,2007:279 -283.

[5]吉绪发,王洪飞.南方软件CASS6.0用户手册[K].广州:南方数码科技有限公司,2004.

[6]吕志平,张建军,乔书波.大地测量学基础[M].北京:解放军出版社,2005:176-203.

Design and Realization of Receiving Mold Piece of the Positioning Data of Compass Based on AUTOCAD

MA Huai-wu1,WANG Jun-qiang1,HAO Heng-qiang1,Chen-Bo2
(1.68029 Troops,Lanzhou Gansu 730020 China;2.68011 Troops,Lanzhou Gansu 730020 China)

Increasing the receiving and processing mold piece of big dipper positioning data of Compass based on the platform of AUTOCAD,we can collect the positioning data of the coordinate system of CGCS2000 quickly for updating map data.This paper has realized receiving and processing the positioning data of Compass based on AUTOCAD.NET by using C#Language.

Serial-port communication;protocol of NMEA-0183;sign database of CASS;AUTOCAD

P 208;P 209

B

1007-9394(2012)02-0026-03

2012-01-10

马怀武(1972~),男,甘肃靖远人,硕士,高级工程师,主要研究方向:大地测量与导航工程。

猜你喜欢
二次开发串口北斗
北斗时钟盘
浅谈AB PLC串口跟RFID传感器的通讯应用
浅谈基于Revit平台的二次开发
“北斗”离我们有多远
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
首个北斗全球“厘米级”定位系统开建
中国的北斗 世界的北斗
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索