全站仪数据通信和数据格式转换.doc_第1页
全站仪数据通信和数据格式转换.doc_第2页
全站仪数据通信和数据格式转换.doc_第3页
全站仪数据通信和数据格式转换.doc_第4页
全站仪数据通信和数据格式转换.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Xxxxxx毕业论文目录第1章 绪论11.1 研究的背景、目的和意义11.2 研究的目标和主要研究内容1第2章 基础理论知识22.1 数据通讯22.2 数据文件格式4第3章 数据通信及数据格式转换的实现73.1 全站仪串口通信的实现73.2 二进制数据转换的实现113.3 AutoCAD DXF数据转换的实现12第4章 数据通信及数据格式转换实例194.1 数据通信的实例194.2 数据格式转换的实例21第5章 结论与讨论255.1 结论255.2 讨论25参考文献26附录程序代码27一、全站仪数据通讯代码:27二、二进制文件格式转换代码:31三、AutoCAD DXF格式转换代码:34致谢38第1章 绪论1.1 研究的背景、目的和意义目前,在测绘行业,由电子全站仪、电子计算机、数控绘图仪等硬件设备和相应数据处理软件构成的大比例尺地面数字测图系统近十年来得到迅速发展,形成了一个从野外数据采集、数据处理到图形编辑和绘图自动化的测图系统,并已逐步取代传统的大比例尺平板测图。随着现在数字化测绘的发展,数字化测量仪器全站仪在测量工作中得到了广泛的使用,测绘仪器越来越先进,越来越智能化,工作效率大大提高,但是这就需要解决好多问题,其中比较重要的就是设备通信和数据格式之间的转换问题。为此,我们需要对数字化过后的数据进行下载传输,并得到我们所用数字化绘图软件所需的数据格式,以方便我们对测绘数据的后期的处理。现在计算机技术的发展也是飞速的,各种通信方式层出不穷,有的也很方便。运用编程语言编写应用程序,我们可以方便的从全站仪中读入所需的数据,并能把下载下来的数据转换成为我们需要的数据格式。这样既减少了工作时间,又提高了工作的效率。1.2 研究的目标和主要研究内容本文想运用Visual Basic6.0编程环境,编写程序,以实现全站仪与计算机的数据通讯,并通过程序把数据转换成为我们直接可以使用的特定数据格式,如AutoCAD DXF格式。以方便数据的通信和通信后的数据转换为我们需要的格式。文章主要研究如何运用Visual Basic6.0编程,以串口实现全站仪与计算机的通讯。并实现二进制数据格式的转换以及AutoCAD DXF格式的转换。第2章 基础理论知识2.1 数据通讯2.1.1 数据通讯的概念所谓数据通讯,是指计算机与计算机之间,或是计算机与数据终端之间经过通讯线路而进行的信息交流与传送的通信方式1。通信的方式有两种:无线数据通信和有线数据通信。无线数据通信有蓝牙通信,红外通信等。有线通信有并行通信和串行通信,本文主要介绍有线数据通信。所谓并行通信,是指通过多条数据线将数据信息的各位二进制数同时并行传输,每位数占用一条数据线。并行通信的传输速度快,但各数据要求同时发送,并按同一速度传输,接收端才能收到完整而准确的信息,若各条数据发送速度不一致,可能会收到错误的信息。因而必须使用专门技术和专门设备进行接收,制作成本大。所谓串行通信,是指数据信息按二进制位的顺序由高到低一位一位的在一条信号线上传送。这种传输方式速度慢,但设备要求简单,价格低廉,同时由于是在一条线上传输,每一个二进制数无论传输快慢,最终均能组成完整而准确的信息,信号质量高,因此是常用的通信交换方法。全站仪也正是采取串行通信的方法进行数据通讯的。2.1.2 串行通信在串行通信中,有两种最基本的通信方式,分别为异步通信与同步通信。(1)异步通信,数据或字符时一帧一帧地传送,帧定义为一个字符完整的通信格式,也称为帧格式。它在占用一位的起始位表示字符的开始,其后是5到8为数据,规定低位在前,高位在后;再是奇偶效验位,通过对数据奇偶性的检查,用于判别字符传输的正确性,可选择三种方式即奇校位、偶校位和无校位;最后用停止位表示字符的结束,可以是1位、1.5位或者2位。从起始位开始到停止位结束构成完整的一帧。由于异步通信每发送一帧都有固定的格式,通信双方只要按约定的帧格式来发送和接受数据,所以硬件结构比同步通信方式更简单。此外,它还能利用效验位检测错误,所以,这种通信方式应用较为广泛。(2)同步通信中,数据或字符开始处是用同步字符来指示,一般约定为1到2个字符,以实现发送端和接受端同步,一旦检测到约定同步字符,下面就连续按顺序接受数据,因为同步通信数据块传送去掉了字符开始和结束的标志位,所以其速度高于异步传送,但这种方式要求有时钟来实现发送端与接受端之间的同步,对硬件结构要求较高。这主要用于计算机与计算机之间的通信。串行通信的数据传送速率可以用波特率表示,其意义是每秒传送多少为二进制数。2.1.3通信制式 数据通信基本方式按传送方向可分为四种:单工方式,半双工方式,全双工方式和多工传输方式。(1)单工方式。在单工方式下,只允许在规定的方向上传输数据,而不允许向相反的方向传输数据,即数据通信是单方向的。在通信双方中,根据数据的流向,一方是发送单元,另一方是接受单元,接受单元式不允许发送数据的。(2)半双工方式。在半双工方式下,通信双方每一方都具备发送和接受功能,但一方是方送单元时,另外一方必须是接受单元。同理,当一方由接受单元变为发送单元时,另一方必须由发送单元变为接受单元。即数据通信虽然是双向的,但并非同时进行,在任意时刻,只能在一个方向上传输数据。(3)全双工方式。在全双工方式下,任何时刻都允许在两个方向上传输数据,即发送数据单元在发送数据的同时也可以接受,而接受单元在接受的同时也可以同时发送数据。而且两个同时发送的信息可以有关也可以无关。(4)多工传输方式。使用复用技术,将一个信道(即传输信号的线路)划分为若干个频带或时间片,从而使多路信号同时共享信道,这就是多工传输方式。使用复用器和集中器可以降低成本,提高通信网的传输效率。2.1.4通信接口标准 串行通信时,要求通讯双方都采用一个物理接口标准,使不同厂家生产的各种设备可以方便地连接起来进行通讯,目前应用最为广泛的有RS-232和RS-485两种。 RS-232-C 是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准,是数据终端设备(DIE)和数据通信设备(DCE)之间的接口标准。该标准规定采用一个25引脚的DB-25接口,对接口的美个引脚的信号内容加以规定,还对各种信号的电平加以规定。在日常应用中,一般使用的只有3到9个引脚,RS-232-C最常用的9个引脚DB-9的引脚定义如图所示,引脚的信号内容如图。由于RS-232-C接口标准出现比较早,难免有不足之处,主要有以下四点。(1)接口的信号电平值较高,逻辑“1”以两线间电压差+(515)V表示,逻辑(0)以两线间的电压差为-(515)V表示,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。(2)传输速率低,在异步传输时,波特率为20Kbps。(3)接口使用一根信号线和一根信号返回线而构成共同的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。(4)传输距离有限,最大传输距离标准值为50英尺,实际也只能在50米左右。 针对RS-232-C的不足,于是就出现了一些新的接口标准,RS-485就是其中应用最广泛发一种,它具有以下特点:(1) RS-485的接口信号电平比RS-232-C降低了,逻辑“1”以两线间的电压差为+(26)V表示,逻辑“0”以两线间的电压差为-(26)V表示,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。(2) RS-485的数据最高传输速率为10Mbps。(3) RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。(4) RS-485接口的最大传输距离标准值为4000英尺,实际上可达3000米,另外RS-232-C接口的总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连接多达128个接收器。即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。2.2 数据文件格式2.2.1 文件格式 在计算机系统中,文件的种类繁多,处理方法和用途也各不相同。文件的分类标准主要有下列三种:(1)按文件的内容分类,可分为程序文件和数据文件。程序文件存储的是程序,包括源程序和可执行程序,例如vb工程中的窗体文件(.vbp)、C+源程序文件(.cpp)、可执行文件(.exe)等都是程序文件。数据文件存储是程序运行所需要的各种数据,例如文本文件(.txt)、Word文档(.doc)、Excel工作簿(.xls)都是数据文件。(2)按存储信息的形式分类,可分为ASCII文件和二进制文件。ASCII文件存放的是各种数据的ASCII代码,可以用记事本打开;二进制文件存放的是各种数据的二进制的代码,不能用记事本打开,必须用专有程序打开。例如整数123,若以ASCII形式存储,则存储的是这3个字符的ASCII代码,一般需要3个字节;若以二进制形式存储,则一般需要2个字节(C+中需要4个字节)。(3)按访问模式分类,可分为顺序文件、随机文件和二进制文件。a、顺序文件顺序文件要求按顺序进行访问。读出时按从头到尾的顺序读,写入时也一样。顺序文件的优点是结构简单,访问模式简单,用它处理文本文件比较方便,缺点是必须按顺序访问,因此不能同时进行读、写两种操作。在vb中,顺序文件其实就是文本文件,因为所有的数据的写入顺序文件前都被转换为ASCII字符。b、随机文件在随机文件中,文件中的每条记录的长度都是相同的,记录与记录之间不需要特殊的分隔符号,用户只需要给出记录号,就可以直接访问某一特定记录。因此,与顺序文件相比,它的优点就是存取速度快,更新简便。c、二进制文件二进制文件是按访问模式分类的,与按信息存储形式分类的二进制在概念上是有区别的。从信息存储的形式来说,随即文件也应归到二进制文件,因为随机文件存储的也是各种数据的二进制代码。从访问模式来说,二进制文件是最原始的文本类型,由一系列字节组成,没有固定的格式,只是要求以字节为单位定位数据位置,允许程序直接访问各个字节数据,也允许程序按所需的任何方式组织和访问数据。这类文件的灵活性最大,但是编程的工作量也最大。事实上,任何文件都可以当作二进制文件来处理。二进制文件与随机文件和类似,如果把二进制文件中的每一个字节看做是一条记录,则二进制文件就成了随机文件。2.2.2 AutoCAD DXF文件格式由于AutoCAD具有强大的图形绘制与编辑功能,并且具有开放的工作平台,许多CAD用户均选用AutoCAD作为其CAD应用软件,并选择它作为CAD二次开发的平台。但是由AutoCAD绘制的图形通常以*.dwg格式文件以压缩的二进制格式保存图形数据,一般仅限于在AutoCAD绘图环境中使用。因此,用*.dwg文件作为共享信息的接口有一定的局限性。而DXF文件格式就是为解决AutoCAD与其他软件之间进行图形数据的交换而定义的图形交换文件,由于DXF文件具有结构严密、易于读取等特点,已成为国际上较为通用的图形交换文件之一。一个ASCII码DXF文件要占很多行。一个简单的DXF文件可能动辄几千行。但经过我们仔细分析就会发现,DXF格式的文件具有很强的规律性。概括起来,一个DXF文件由七个段(SECTION)组成,这七个段分别为:HEADER段(标题段)、CLASSES段(类段)、TABLES段(表段)、BLOCKS段(块段)、ENTITIES段(实体段)、OBJECTS段(对象段)、THUMBNAILIMAGE段(图形预览段)。每个段通常又由一系列组组成。每个组占两行,第一行称为组码,第二行称为组值。组码说明了组值的类型,组值则说明具体值的大小。DXF文件中,每组均以组码作为该组的简称。如组码为2的组称为2组码,组码为30的组称为30组码。由上面陈述我们知道,DXF文件一般由七个段组成。每个段均以组码为0的组开始,位于0码后面的是字符串SECTION,位于SECTION之后的是组码2,而位于该码之后的是表示该段段名的字符串,如前面代码中的第四行HEADER表示此段为HEADER段。每个段以0和跟随它的字符串ENDSEC结束。第3章 数据通信及数据格式转换的实现3.1 全站仪串口通信的实现3.1.1窗体的设计(1)打开Visual Basic6.0,新建一个窗体,如3-1-1-1图;3-1-1-1(2)在“工程”菜单下的“部件”子菜单中添加Microsoft Comm Control 6.0和Microsoft Common Dialog Control 6.0部件,如3-1-1-2图;3-1-1-2(3)在“工具”菜单的“菜单编辑器”子菜单里添加程序所需的菜单项目,如3-1-1-3图;3-1-1-3(4)从Visual Basic6.0的工具栏添加程序设计所需的控件,如3-1-1-3图;3-1-1-43.1.2程序的实现(1)Visual Basic6.0有两种方法可以实现数据的串口通信:Windows API函数编程和MSComm控件编程。利用Windows API函数能够开发很好的通信程序,但实现起来比较复杂,不仅要求开发人员要掌握Visual Basic6.0调用Windows API函数的方法,还要求对Windows API有相当的了解。而MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能,过程比较直观、简便。在实际开发时可以根据系统对通信性能的要求进行选择,本文出于全站仪数据通信一般数据量不是很大,且编程的简易性考虑,采用了MSComm 控件实现数据的通信。可能用到的MSComm 控件的属性有以下几个:Comm Port : 设置串行口号;Setting : 设置串行通讯参数;PortPopen : 设置或返回串口的通讯状态;InputMode : 设置从缓冲区读取数字的格式;Input: 从接收缓冲区读取数据;Output : 向缓冲区写入数据;InBufferSize : 接收缓冲区的大小;OutBufferSize : 发送缓冲区的大小;OutBufferCount : 发送缓冲区的字节数;InputLen : 设置或返回Input 每次读出的字节数。(2)MSComm控件提供了两种处理串口通讯方式;查询方式和事件驱动I/O方式。查询方式直接,易于理解,但占用大量CPU时间;事件驱动方式是由Windows 98通知应用程序某些事情什么时候发生,然后根据所发生的事情来对串口进行操作。这两种方式各有利弊和自己适用的领域,所以在不同的通信系统中,可以根据不同的要求采用不同的技术2。在全站仪数据通信中,比较适合采用事件驱动的方式来进行通信,即通过控制通信端口的开关来确定是否通信,也就是MSComm1.PortOpen的属性。以下为全站仪数据下载的主要代码:设置串口波特率、奇偶校验、数据位、停止符MSComm1.Settings = CommSet 打开串口MSComm1.PortOpen = True 开始 接收仪器发送数据 Do DoEvents If MSComm1.PortOpen =False ThenExit DoEnd IfText1.Text = Text1.Text + MSComm1.InputLoop 依据这样的设置,再用RS232C型电缆将电脑的串口与全站仪连接起来,就能实现电脑与全站仪的串行通讯的下载全站仪数据功能。3.2 二进制数据转换的实现二进制文件的访问单位是字节。在二进制文件中,可以把文件指针移到文件的任何地方。文件刚刚被打开时,文件指针指向第一个字节,以后将随着文件处理命令的执行而移动。二进制文件一旦打开,可以同时进行读或写。(1)二进制文件的打开和关闭打开文件使用Open语句。表达式如下:Open 文件名 For Binary As #文件号 Len = 记录长度文件名可以是字符串常量,也可以是字符串变量。(2)二进制文件的读/写a、二进制文件的写操作使用Put命令,其形式如下:Put #文件号,记录号,变量名Put命令是将一个记录变量的内容,写入所打开的磁盘文件中指定的记录位置处。记录号是大于1的整数。如果忽略记录号,则表示在当前记录后写一条记录。b、二进制文件的读操作使用Get命令,其形式如下:Get #文件号,记录号,变量名Put命令是将一个记录变量的内容,写入所打开的磁盘文件中指定的记录位置处。记录号是大于1的整数。如果忽略记录号,则表示在当前记录后写一条记录。例如,将文件C:Student.dat复制为C:Student.bak。编码如下: Dim char as Byte Dim FileNum1,FlieNum2 as Integer FileNum1 = FreeFile Open “C:Student.Dat”For Binary As # FileNum1打开目标文件 FileNum2 = FreeFile Open “C:Student.Bak”For Binary As # FileNum2 Do While Not EOF(FileNum1)从源文件读出一个字节 Get #1,char 将一个字节写入目标文件 Put #2,char Loop关闭源文件 Close # FileNum1 关闭源文件 Close # FileNum2 3.3 AutoCAD DXF数据转换的实现一般从全站仪里传输来的数据格式为:“点号,X坐标,Y坐标,Z坐标,编码,”。经过简单处理就可以转换为南方CASS的DAT数据文件格式,“点号,编码,Y坐标,X坐标,Z坐标,”。下面介绍数据由南方CASS的DAT格式到DXF的数据格式转换。只实现一个一个孤点的转换。下面就是南方DAT数据转换为DXF文件的示例,我们通过分析两者之间的联系来找到编写实现转化的程序。南方DAT数据:3,F,438515.71,3534124.38,39.364,F,438533.65,3534118.04,40.855,K9,438496.78,3534040.2,37.876,J,438523.89,3534126.42,39.67转化为DXF数据后:0SECTION2ENTITIES0POINT8010 438515.71 20 3534124.38 30 39.36 0POINT8010 438533.65 20 3534118.04 30 40.85 0POINT8010 438496.78 20 3534040.2 30 37.87 0TEXT8010 438515.71 20 3534124.38 30 39.36 402.51F0TEXT8010 438533.65 20 3534118.04 30 40.85 402.51F0TEXT8010 438496.78 20 3534040.2 30 37.87 402.51K90ENDSEC0EOF 经过两者的对比以及上述所了解的DXF基本知识,可以知道文件的开头和结尾固定,即:0SECTION2ENTITIES0ENDSEC0EOF 而中间可分为两部分,经分析也有一定的规律。第一部分为:0POINT8 图层名(固定)0 0层10 主要点的 X 值(后跟 Y 和 Z 值代码 20 和 30) X坐标值20 主要点的 Y 值 Y坐标值30 主要点Z 值 Z坐标值 接下来就是重复这一段,有多少个点就重复多少次,改变的只是X、Y、Z的坐标值。第二部分为:0TEXT8010 第一对齐点(在 OCS 中)X值 X坐标值20 第一对齐点(在 OCS 中)Y值 Y坐标值30 第一对齐点(在 OCS 中)Z值 Z坐标值40 文字高度2.5 高度为2.51 默认值(字符串本身)即DAT中的编码F 编码值 下面就让我们先详细了解一下ENTITIES段中的POINT和TEXT实体中的组码。POINT实体组码:表1 POINT实体的组码组码说明100子类标记 (AcDbPoint)10点位置(在 WCS 中)DXF:X 值20, 30DXF:点位置的 Y 值和 Z 值(在 WCS 中)39厚度(可选;默认值 = 0)210拉伸方向(可选;默认值 = 0, 0, 1) DXF:X 值;220, 230DXF:拉伸方向的 Y 值和 Z 值(可选)50绘制点时所使用的 UCS 的 X 轴的角度(可选;默认值 = 0);当 PDMODE 非零时使用TEXT实体组码表2 TEXT实体的组码文字组码组码说明100子类标记 (AcDbText)39厚度(可选;默认值 = 0)10第一对齐点(在 OCS 中) DXF:X 值20, 30DXF:第一对齐点的 Y 值和 Z 值(在 OCS 中)40文字高度1默认值(字符串本身)7文字样式名(可选;默认值 = 标准)21, 31DXF:第二对齐点的 Y 值和 Z 值(在 OCS 中)(可选)210拉伸方向(可选;默认值 = 0, 0, 1)220, 230DXF:拉伸方向的 Y 值和 Z 值(可选) 由此我们可以清楚地知道了各个组码所代表的含义。由上述叙述可知将南方DAT数据转化为DXF文件最关键的是POINT的坐标值和TEXT部分的编码值的获取。主要代码为:For i = 0 To sum - 2 Print #2, 0 Print #2, POINT Print #2, 8 Print #2, 0 Print #2, 10 Print #2, y(i) Print #2, 20 Print #2, x(i) Print #2, 30 Print #2, z(i)Next iFor j = 0 To sum - 2 Print #2, 0 Print #2, TEXT Print #2, 8 Print #2, 0 Print #2, 10 Print #2, y(j) Print #2, 20 Print #2, x(j) Print #2, 30 Print #2, z(j) Print #2, 40 Print #2, 2.5 Print #2, 1 Print #2, b(j) Next j第4章 数据通信及数据格式转换实例4.1 数据通信的实例 下面以Topcon105N全站仪(如4-1-1图)为例,为大家展示串口数据通信的过程:4-1-1(1) 首先全站仪数据传输需要一台具有串口的电脑,一般台式电脑上都会有串口,笔记本电脑可以购置一个USB转串口的连接线。用RS-232C数据传输线把全站仪和电脑连接起来。(2) 打开编写好的数据通讯可执行EXE程序(如4-1-2)。4-1-2(3) 打开Topcon全站仪,按照MENU存储管理数据通讯发送数据坐标数据调用回车。全站仪即出现如4-1-3图界面。4-1-3(4) 先在全站仪数据通信程序上点击“下载”按钮,再在全站仪上点击“是”对应的按钮,即可实现全站仪数据的下载功能。下载结果如4-1-4图所示。4-1-44.2 数据格式转换的实例4.2.1二进制数据转换实例(1)新建一个word文档,在里面随便写一点内容保存,如4-2-1-1图所示:4-2-1-1(2)运行程序将上面的word文件进行转换如4-2-2图:4-2-1-2(3)得到结果如4-2-1-3图,其中的123文件是转换后的文件,1234是转换后又转换回的文件:4-2-1-3(4)然后用word打开123.wgd得到结果如4-2-1-4图:4-2-1-4(5)用word打开1234.dat文件结果如4-2-1-5:4-2-1-5经过此次验证,这次毕业设计的任务和目标完成。4.2.2 AutoCAD DXF数据转换实例(1)找到一个南方CASS的DAT文件,DXF测试数据.dat文件“3,F,438515.71,3534124.38,39.364,F,438533.65,3534118.04,40.855,K9,438496.78,3534040.2,37.876,J,438523.89,3534126.42,39.67”;(2)运行DXF转换程序,如4-2-2-1图;4-2-2-1(3)点击“选择文件”按钮选着准备好的DXF测试数据.dat文件;(4)点击“保存位置”按钮,保存为123.dxf文件,如4-2-2-2图;4-2-2-2(5)点击“转换”按钮即可得到123.dxf文件。用txt文件打开为图4-2-2-3所示。4-2-2-3第5章 结论与讨论5.1 结论用Visual Basic6.0因为具有易学易用、编程简单、程序集成化高等优点,被广泛地用于开发各种应用系统,但对于类似串口这样的硬件设备编程却不是它的特长。由于所学习知识面的限制,暂时只能用Visual Basic6.0语言编写。以后有机会用其他适合的语言编程,程序的运行效果可能会更好,如C+等。本文中运用MSComm控件开发串口通信程序的方法简单,但是稳定性、效率方面稍显不足。数据格式转换只是停留在基本数据格式转换,能满足测绘工程所需的基本数据格式要求,鉴于精力和运用的需要,其他格式的数据转换需要时再做编写。5.2 讨论本次毕业论文由于受到时间和知识水平的限制,各程序还存在一些不足,有待将来有能力作进一步的研究改善,下面对以后的研究工作有几点建议:(1)全站仪数据通信目前广泛采用的是串口通信,但目前的数据通信的方式很多,USB通信,无线通信等,常用的有串行通信和并行通信。随着技术的发展,以后全站仪是数据通信方法肯定会越来越简单,稳定。要寻求更为简单,可靠,成本低廉的通信方法,并通过程序编程实现运行。(2)限于时间和本人知识面的问题,串口通信过程本程序只实现了数据从全站仪内下载到电脑的过程,从电脑上传到全站仪的过程尚未实现,这个过程在测绘工作中运用也很多,以后可以尝试实现这个过程。(3)数据格式转换是一项不断发展的课题,在测绘行业,随着新型的绘图软件的开发,可能会面临着新的数据格式,因此,数据格式转换运用广泛,但是运用Visual Basic6.0编程比较复杂,运用其他程序合适的语言编写肯定会提高编程效率,方便简洁,这需要以后接触其他编程语言后做对比,寻找适合的方法实现数据格式转换。参考文献1李玉宝,曹智祥,余代俊等 大比例尺数字化测图技术第二版 西安交通大学出版社 2009.32付海波,曹红杰,VB环境下计算机与全站仪的数据通讯的方法,北京测绘,2000年第四期3佟虎,VB语言与测量程序设计 中国电力出版社,2007.84梁雪春,宋德明,AutoCAD2002二次开发技术指南 清华大学出版社,2001.115陈浩,陈宏,解读AutoCAD的DXF文件 贵州科学,2002,20(4)6 龚家玉,黄德咏,AutoCAD与其他常用软件的数据转换 四川测绘,2004(1)7 张成才,孙喜梅,朱陶业,AutoCAD的DXF文件格式及其转换接口研究 微型电脑应用,2001,8 郭朝勇等,AutoCADR14(中文版)二次开发技术 清华大学出版社,19999 方勇,基于AutoCAD的DXF文件的转换 苏州职业大学学报,2003.810 夏治国,全站仪与计算机数据通讯期刊论文-测绘学院学报1996(04)附录程序代码一、全站仪数据通讯代码:打开关于窗体Private Sub about_Click() frmAbout.ShowEnd Sub用commondialog控件save命令保存文件Private Sub baocun_Click() On Error GoTo trip2 Cmd1.FileName = default.txt Cmd1.DefaultExt = txt Cmd1.Action = 2 Open Cmd1.FileName For Output As #1 Print #1, Text1.Text Close #1trip2:End Sub显示数据选择对象Private Sub bianjims_Click() Dialog.ShowEnd Sub用commondialog控件open命令打开文件Private Sub dakai_Click() On Error GoTo trip1 Cmd1.Action = 1 Text1.Text = Open Cmd1.FileName For Input As #1 Do While Not EOF(1) Line Input #1, inputdata Text1.Text = Text1.Text + inputdata + vbCrLf Loop Close #1trip1:End SubPrivate Sub Form_Load() With MSComm1 读取缓冲区所有数据 .InputLen = 1 .InBufferSize = 4096 End WithEnd SubPrivate Sub MSComm1_OnComm()MSComm1.Settings = CommSet With MSComm1 Do While .PortOpen = True 开始接受数据 DoEvents 在text中写入数据 Text1.Text = Text1.Text + MSComm1.Input Loop End WithEnd Sub新建文件Private Sub new_Click() Text1.Text = End Sub用commondialog控件open命令打开文件Private Sub open_Click() On Error GoTo trip1 Cmd1.Action = 1 Text1.Text = Open Cmd1.FileName For Input As #1 Do While Not EOF(1) Line Input #1, inputdata Text1.Text = Text1.Text + inputdata + vbCrLf Loop Close #1trip1:End SubPrivate Sub print_Click() On Error GoTo trip4Cmd1.Action = 5For i = 1 To Cmd1.Copies Printer.Print Text1.Text Next i Printer.EndDoctrip4:End Sub关闭程序Private Sub quit_Click() EndEnd Sub用commondialog控件save命令保存文件Private Sub save_Click() On Error GoTo trip2 Cmd1.FileName = default.txt Cmd1.DefaultExt = txt Cmd1.Action = 2 Open Cmd1.FileName For Output As #1 Print #1, Text1.Text Close #1trip2:End Sub调用commondialog控件saveas命令保存文件Private Sub saveas_Click() On Error GoTo trip3 Cmd1.FileName = default.txt Cmd1.DefaultExt = txt Cmd1.Action = 2 Open Cmd1.FileName For Output As #1 Print #1, Text1.Text Close #1trip3:End Sub下载全站仪里的数据Private Sub xiazai_Click() MSComm1.PortOpen = TrueEnd Sub新建文件Private Sub xinjian_Click()Text1.Text = End Sub二、二进制文件格式转换代码:Private Sub Command1_Click()Dim f As StringCommonDialog1.Filter = 文本文件(*.dat)|*.dat|所有文件(*.*)|*.*CommonDialog1.ShowOpenf = CommonDialog1.FileNameIf CommonDialog1.FileName = Then Exit SubEnd IfEnd SubPrivate Sub Command2_Click()Dim f As StringCommonDialog2.Filter = wgd(*.wgd)|*.wgd|所有文件(*.*)|*.*CommonDialog2.ShowSavef = CommonDialog2.FileNameIf CommonDialog2.FileName = Then Exit SubEnd IfEnd SubPrivate Sub Command3_Click()Dim s As ByteDim i As DoubleDim le As DoubleOpen CommonDialog1.FileName For Binary As #1 Len = 1Open CommonDialog2.FileName For Binary As #2 Len = 1le = LOF(1)If le Mod (2) = 0 Then For i = 1 To le / 2 Get #1, i, s Put #2, i + le / 2, s Next i For i = le / 2 + 1 To le Get #1, i, s Put #2, i - le / 2, s Next iClose #1Close #2Else For i = 1 To (le - 1) / 2 - 1) Get #1, i, s Put #2, i + (le + 1) / 2, s Next i For i = (le + 3) / 2 + 1 To le Get #1, i, s Put #2, i - (le + 1) / 2, s Next i Get #1, (le - 1) / 2, s Put #2, (le - 1) / 2, sClose #1Close #2End IfCommand4.Enabled = TrueEnd SubPrivate Sub Command4_Click()Dim s As ByteDim i As DoubleDim le As DoubleDim f As StringCommonDialog3.Filter = dat(*.dat)|*.dat|所有文件(*.*)|*.*CommonDialog3.ShowSavef = CommonDialog3.FileNameIf CommonDialog3.FileName = Then Exit SubEnd IfOpen CommonDialog2.FileName For Binary As #1 Len = 1Open CommonDialog3.FileName For Binary As #2 Len = 1le = LOF(1)If le Mod (2) = 0 Then For i = 1 To le / 2 Get #1, i, s Put #2, i + le / 2, s Next i For i = le / 2 + 1 To le Get #1, i, s Put #2, i - le / 2, s Next iClose #1Close #2Else For i = 1 To (le - 1) / 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论