欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    GPS通讯程序设计.pdf

    • 资源ID:74639804       资源大小:477.25KB        全文页数:28页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    GPS通讯程序设计.pdf

    GGP PS S、GGI IS S 网网网网络络络络通通通通讯讯讯讯程程程程序序序序设设设设计计计计 刘海滨(毕业设计论文)摘要摘要:1.GPS 简介及其基本理论以及 MapX 控件 GIS 内容提要。结合 GIS 工具软件与当今可视化开发语言的集成二次开发方式就成为 GIS 应用开发的主流。它的优点是既可以充分利用 GIS 工具软件对空间数据库的管理、分析功能,又可以利用其它可视化开发语言具有的高效、方便等编程优点,集二者之所长,不仅能大大提高应用系统的开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的外观效果,更强大的数据库功能,而且可靠性好、易于移植、便于维护。并用 Microsoft 提供的 ActiveX MSComm 组件建立简单简洁的通讯接口程序。实现简单的通讯方式。程序利用网络实现了三种数据传输通信协议,程序结构简洁,层次清楚,而且具有很好的应用价值。关键词关键词:GPS、MapX 控件 GIS、VB、MSComm 组件、数据链路层、数据传输协议。引言引言:论文内容着重介绍 GPS 的原理以及简单的 GIS 图形设计。并用 VB 编程工具实现简单模拟通讯功能说明 GPS、GIS 网络的通讯方法。可以充分利用 GIS 工具软件对空间数据库的管理、分析功能,又可以利用其它可视化开发语言具有的高效、方便等编程优点,集二者之所长,不仅能大大提高应用系统的开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的外观效果,更强大的数据库功能,而且可靠性好、易于移植、便于维护。尤其是使用 OCX 技术利用 GIS 功能组件进行集成开发,更能表现出这些优势。Map Info 公司顺应这一发展潮流,该公司开发的 MapX 就是一种受到用户广泛欢迎的功能强大的地图分析功能的 ActiveX 控件,本文将对该控件作简要的介绍。GPS 简介及基本理论GPS 简介及基本理论:一、关于 GPS 的概述。GPS 是 英 文 Navigation Satellite Timing and Ranging/Global Position System 的 字 头 缩 写 词(NAVSTAR/GPS)的简称。它的含义是,利用卫星的测时和测距进行导航,以构成全球卫星定位系统。现在国际上已经公认:将这一全球定位系统简称:GPS.自古以来,人类就致力于定位和导航的研究工作。1957 年 10 月世界上第一颗卫星发射成功之后,利用卫星惊醒定位和导航的研究工作提到了议事日程。1958 年底,美国海军武器试验室委托霍布金斯大学应用物理实验室研究美国军用舰艇导航服务的卫星系统,即海军导航卫星系统(Navy Navigation Satellite SystemNNSS).这个系统中,卫星的轨道通过地极,所以又称为子午仪卫星导航系统(Transit).1964 年 1 月用于北极星核潜艇的导航定位研究成功,并逐步用于各种军舰的导航定位。1967年 7 月,经美国政府批准,对其广播星历解密,并提供民用,为远洋船舶导航和海上定位服务。由此显示出了卫星定位的巨大潜力。尽管子午仪卫星导航系统已得到广泛应用,并显示出巨大的优越性,但是,这系统再实际应用方面却存在十分严重的缺陷。改系统是由 56 个卫星组成的导航网。卫星运行高度较低(平均约 1000km),运行周期为 107 分钟。对同一个卫星每天通过次数最多为 13 次。由于采用多普勒定位原理,一台接收机一般需要观测 15 次合格的卫星通过,才能达到10M 的单点定位精度,再全球范围内,它给出的定位信息只能是全天候的连续二维坐标经度和纬度,不能给出高程。这种系统,一方面由于所需的观测时间较长,不能给用户,尤其是高动态用户(如:飞机、车辆等)提供实时和导航服务;另一方面,由于卫星导航较低,受大气影响严重,定位精度的提高受到限制,因而限制了高动态用户和高精度用户的使用。对舰船而言,利用这个系统只能对惯性导航系统和其他无限电导航系统进行连续的精确修正,它的作用远不能满足全球实时定位的要求。鉴于子午仪卫星导航系统对潜艇和对水面船舶导航的可靠服务以及该系统存在的缺陷。美国于 60年代末着手研究新的卫星导航系统,以满足海陆空三军和民用不盟对导航越来越高的要求。为此,美国海军提出了名为“Timation”的计划,该计划采用 1218 颗卫星组成的全球定位网,卫星高度约10000Km,轨道呈圆形,周期为八小时,并与1967年5约31日和1969年9约30日分别发射了timation-1和Timation-2 两颗试验卫星,与此同时,美国空军提出了名为”621-B”计划,它采用 34 个星群覆盖全球,每个星群由 45 颗卫星组成,中间一颗采用同步定点轨道,其余几颗采用周期为 24 小时倾斜轨道。这两种计划的目标一致,即建立全球定位系统。但两个计划的实施方案和内容不同,各有优缺点。考虑到两个计划的各自优缺点以及美国难于同时负担研制两套系统的庞大经费开支,1973 年美国代理国防部长批准成立一个联合计划局,并在洛杉矶空军航天处内设立办事机构。在联合计划局的领导下,诞生了GPS方案。这个方案是由 24 颗卫星组成的实用系统。这些卫星分布在互成 120。的三个轨道平面杉,每个轨道平面平均分布 8 颗卫星。这样,对于地球任何位置,均能同时观测到 69 颗卫星。预计粗码定位经度为 100m左右,精码定位经度为 10m左右。1978 年,由于压缩国防预算,减少了对GPS计划的拨款,于是将实用系统的卫星数由 24 颗减为 18 颗,并调整了卫星配置。18 颗卫星分布在互成 60。的 6 个轨道面上,轨道倾角为 55。每个轨道面上布设 3 颗卫星,彼此相距 120。从一个轨道面的卫星到下一个轨道面的卫星之间错过 40。这样的卫星配置即使全部卫星正常工作,其平均可靠度仅为 0.9969。如果卫星发生故障,将使可靠性大大降低。因此 1990 年初又对卫星配置进行 了 第 三 次修 改。最 终的 GPS 方 案 是 由 21 颗工 作 卫 星 和三 颗 在 轨 备用 卫 星(如图)卫星的轨道参数基本上与第二方案相同。只是为了减少微型漂移,降低对所需轨道位置保持的要求,为卫星的高度提高了 49km,即长半轴由 26650km 提高到了 26609km.这样,由每年调整一次卫星位置改为每七年调整一次。GPS 实施计划共分为三个阶段:第一阶段:为方案论证和初步设计阶段。从 1973 年到 1979 年,共发射了 4 颗试验卫星,研制了地面接收机及建立地面跟踪网,从硬件和软件上进行了试验。试验结果令人满意。第二阶段为全面研制和试验阶段:从 1979 年到 1984 年,又陆续发射了 7 颗式样卫星。这一阶段称之为 Block I.与此同时,研制了各种用途的接收机,主要是导航型接收机,同时测地型接收机也相继问世。试验表明,GPS 的定位经度远远超过设计标准。利用粗码的定位精度几乎提高了一个数量级,达到 14m。由此证明,GPS 计划是成功的。第三阶段为使用组网阶段。1989 年 2 月 4 日第一柯 GPS 工作卫星发射成功,宣告了 GPS 系统进入工程建设极端。这种工作卫星称为 BlockII 和 BlockIIA 卫星。二、GPS 的组成:GPS 包括下列三大部分:GPS 卫星(空间部分)、地面支撑系统(地面监控部分)、GPS 接收机(用户部分)。1.GPS 卫星:自 1978 年 2 月 22 日发射第一颗 GPS 试验卫星以后,到 1985 年 10 月 9 日发射最后一颗 GPS 试验卫星,共有 11 颗试验卫星在轨道上运行。这些试验卫星称为 blockI 卫星。现在只有四颗卫星仍在工作。试验卫星是在加利福尼亚的范登堡空军基地采用 AtlasF 火箭发射入轨的。运行轨道呈近似圆形,长半轴 26560km,倾角为 64 度,轨道高度约 20000km.这些卫星只分布在 A,C两个轨道平面那,其目的是为了保证亚利桑那州的 Yama 试验基地能够获得最长的连续观测时间。每颗卫星按下列方式编号:a)顺序编号按照 GPS 试验卫星发射时间的先后次序对卫星进行编号。b)根据 GPS 试验卫星发射时间的伪随机噪声码(PRN 码)对卫星进行编号,在导航定位中,采用 PRN 编号,这一规则一直沿用至今。c)IRON 编号:IRON 伪 Inter Range Operation Number 的缩写,意思是内部距离操作码。IRON编号是美国和加拿大组成的北美空军指挥部给定的一种随机号,以此识别所选择的目标。d)NASN 编号:这是美国航天局在其文件中给 GPS 试验卫星的编号。e)国际识别号:他的第一部分表示该卫星的发射年代,第二部分表示该发射卫星的序列号,字母 A 表示发射的有效负荷。2)地面支撑系统:在导航定位中,采用的是卫星后方交会原理。因此必须首先知道卫星的位置,而位置是由卫星星历计算出来的。地面支撑系统的功能就是观测卫星并计算其星历,编辑电文注入卫星,然后由卫星以广播星历的方式实时地传送给用户。地面支撑系统包括 1 个主控站,3 个注入站和 5 个监测站,如图:3)用户接收机:自从 GPS 全部建成以后,它将昼夜不停地发送导航定位信息,在地球地任何地方和任何时间实现实时定位。这其中最终要地关键设备就是用户接收机。近十几年,世界各国地企业公司和研所单位都相继研制各种类型地接收机。据 1998 年 1 月出版地GPS WORLD统计,已有 60 多家企业生产出 400 多种型号地GPS 接收机。GPS 接收机可以按照不同要求进行分类,如按编码信息分类,按接受地数据分类,按接收机通道分类、按照动态性能分类、按用途分类、按工作模式分类等。但总起来说,可分为两大类:导航型和测地型。导航型接收机结构简单、体积小、耗电省、精度低、价钱便宜,一般采用单频 C/A 码伪距接受技术,定位经度为 100m,用于航空、航海和陆地实时导航中:现在发展地差分 GPS 技术,能使定位精度提高到 1-3 米,大大拓宽了应用范围、有极少数接收机采用 P 码接受技术,使单点定位精度达到 10m,这种接收机专为军用。GPS 接收机地种类虽然很多,但它的结构基本一致,分为天线单元和接受单元两大部分,如图:1.天线单元天线单元:它是由接受天线和前置放大器组成。GPS 接收机天线有:定向天线、偶极子天线、微带天线、螺旋天线等。对天线地性能要求是:高增益,低噪声系数、大的动态范围。由于高性能场效应 FET放大器地出现,现在多采用有源微带天线。2.接收单元接收单元:a)通道单元:它的主要功能是接收来自天线单元的信号,经过变频、放大、滤波等一系列处理过程,实现对 GPS 信号的跟踪、锁定、测量,提供计算位置的数据信息。根据不同需要,可设计成 6-12 通道。通道是由硬件和软件组成。每个通道在某一时可跟踪一颗卫星。当此卫星锁定后,便占据这一通道,直到此卫星信号失锁为止。由于科学技术的反战,并行多通道接收机已经称为主趋势。双通道和多路复用的接收机已经被淘汰。在相关型接收机中,码延迟锁定环和载波相位锁定环是重要的部件。1)码延迟锁定环(DLL)是将本地伪随机码与卫星的伪随机码对齐,实现卫星的根中、锁定、识别和伪距测量。2)载波相位锁定环(PLL)是利用本机的 COSTAS 环,将其载波相位与卫星载波相位锁定,藉以解调出导航电文,并进行载波相位测量。b)计算和显示单元计算和显示单元 它的功能是:1)工作开始的自检;2)根据采集到的卫星星历,伪距观测量计算三维坐标和速度;3)人机对话,按照输入航路点进行导航、输入卫星高度截止角、历元间隔、数据更新率、控制屏幕显示以及其他指令。c)存储单元存储单元 用于存储输入的各种数据,例如,初始化时间和坐标、导航点、星历、原始观测量等。d)电源电源 机内装有专用锂电池(3v),专供接收机的时钟和 RAM 存储器保存星历和初始化数据用的,保证在关机时存储数据。外接镉镍蓄电池向接收机供电(12v).在使用 OEM 芯片时,通常需要 TTL 电平(5v)三、GPS 信号结构:GPS 卫星信号包括三种信号分量:载波、测距码和数据码。时钟频率 f0=10.23MH,利用频率综合器产生所需要的频率。GPS 信号的产生过程如图:GPS 工作所需的信号按如下图的方式进行合成,然后向全球发射,形成现在随时随地都能接收到信号。对用户而言,最感兴趣的是测距码和数据流(导航电文).四、GPS 导航电文:导航电文是用户用来定位和导航的基础数据。它包含卫星的星历、工作状态、时钟改正、电离层时延改正、大气折射改正以及由 C/A 码捕获 P 码等导航信息。它是由卫星信号调制出来的数据码 D(t).这些信息以 50bit/s 的速率调制在载频上,数据采用不归零制(NRZ)的二进制码。导航电文的格式是主帧、子帧、字码和页码.每主帧电文长度为:1500bit,传送速率为 50bit/s,所以发播一帧电文需要 30s 时间:每帧导航电文包括 5 镉子帧,每个子帧长 6s,共有 300bit.第 1、2、3 子帧各有十个字码。这三个子帧的内容每 30s 重复一次,每小时更新一次。第 4、5 子帧各有 24 页,共有 15000bit。一帧完整的电文共有 37500bit,需要 750s 才能构传送完,花费时间达 12.5min。电文内容在卫星注入新的数据后再进行更新。导航电文的内容包括遥测码(TLM)、转换码(HOW)、第一数据块、第二数据块和第三数据块 5 部分。五、GPS 的数据采集和格式转换:1.数据采集:数据歘送分为同步串行传送和异步串行传送。同步串行传送是用单独的时钟信号来对传送的数据进行定时,因此要求有严格的时间控制和同步协议。异步串行传送不要求有严格的时间控制和同步协议,但要求再电文中做一些规定。在数据传送之前需送一个“开始”位,传送完一组数据后再送一个“停止”位。因此,异步串行传送是以字符为基础的。在计算机与 GPS 通讯进行数据传送时,都采用异步串行传送方式 GPS 作为数据终端设备(DTE)和计算机(DCE)之间利用 D 型 RS-232 电缆接口进行数据交换。从数据输出形式来看,GPS 的输出分为两类:1).十进制 ASCII 码:这种码直观,易于识别和应用。GPS 的同意标准格式 NMEA-0183 输出就采用 ASCII码,其格式定义如下:比特率:4800bit/s;数据位:8bit;奇偶校验:无;开始位:1bit;停止位 1bits。2)二进制码:二进制码是用两个符号 0 和 1 表示的编码。此种编码虽然不直观,但运算方便,在计算机种应用非常普遍。目前通用的字长为 8 位,可用两位 16 进制数表示。在编码时,一个二进制数由小数向左,每位 4 位一份分,不足 4 位的前面补零,组成整数部分。由小数向右,每 4 位一分,不足四位的后面补零,组成小数部分。输出/输入二进制数据流的格式是低字节/高字节排列,每个字节的输出次序是从最低有效位(LSB)到最高有效位(MSB)GPS 的原始观测址,星历以及其他数据都采用了二进制编码。为了满足异步串行传送数据的要求,每一组数据需要包含三个部分:字头块,数据块和结束符。字头块包括二进制电文数据类型和 GPS 电文数据格式。Map X 的功能简介 Map X 的功能简介 Map Info 公司吸取了传统 GIS 系统的精华,并借助于计算机技术的发展,及时将 GIS 概念从大中型计算机的专用工作站上普及到普通桌面 PC 上,开创了一种崭新的信息系统模式。MapX 是 Map Info 公司的能向用户提供强大地图分析功能的 Active X 控件产品。MapX 是 MapInfo 公司向用户提供的具有强大地图分析功能的 ActiveX 控件产品。由于它是一种基于 Windows 操作系统的标准控件,因而能支持绝大多数标准的可视化开发环境如 Visual C+、Visual Basic、Delphi、PowerBuilder 等。编程人员在开发过程中可以选用自己最熟悉的开发语言,轻松地将地图功能嵌入到应用中,并且可以脱离 MapInfo 的软件平台运行。利用 MapX,能够简单快速地在企业应用中嵌入地图化功能,增强企业应用的空间分析能力,实现企业应用的增值。MapX 采用基于 MapInfo Professional 的相同的地图化技术,可以实现 MapInfo Professional具有的绝大部分地图编辑和空间分析功能。而且 MapX 提供了各种工具、属性和方法,实现这些功能是非常容易的。鹰眼图是 GIS 中一个基本的功能,鹰眼图又名缩略图,顾名思义,在鹰眼图上可以象从空中俯视一样查看地图框中所显示的地图在整个图中的位置。如图 1 所示:以北京市地图为例,鹰眼的大小可分为北京市城区和北京市全区两个等级。Windows 下的可视化开发工具现在大家接触得最多的就是 VC,VB,下面将详 图 1 鹰眼图示意图 细介绍在 VC 与 VB 环境下鹰眼图的具体实现,从这也可以看出利用 MapX 开发 GIS 应用程序的方法和技巧。三、VB 下鹰眼图的实现。三、VB 下鹰眼图的实现 Form 上放两个 MapX 控件:Map1(主图),Map2(鹰眼图);然后在Di 鹰眼图上临时图层 Feature 口位置的 Feature rivate Sub Form_Load().Layers.CreateLayer(Rectlayer)在 Map2 创建图层 End Sumap1 的 Bounds 在 Map2 上绘制矩形 Feature VB 下鹰眼图实现的思路是这样的:在某一鹰眼图上创建一个图层,在该图层上添加一个矩形 Feature,该矩形的大小随着主图边界而变化。具体实现参考下面详细代码。m m_Layer As Layer Dim m_Fea As MapXLib.鹰眼图上反映主地图窗 PSet m_Layer=Map2b 根据Private Sub Map1_MapViewChanged()Dim tempFea As MapXLib.Feature 声明 Feature 变量 量 t=0 Then apXLib.Style 创建 Style 对象 内部填充样式 设Map1 的边界的 Rectangle 对象 .Bounds,tempStyle)Else 矩形边框的顶点 点 te 更新显示 End If 鹰眼图上鼠标单击用来导航主图,其方法是把鼠标处的坐标设置为主图的中心 s Single),MapY,miScreenToMap End SuVC 下鹰眼图的实现 VC 下鹰眼图的实现 VB 是一样的,只不过 VC 的可视化程序没有 VB 高,VC 更多的是利用代码来实Dim tempPnts As MapXLib.Points 声明 Points 变Dim tempStyle As MapXLib.Style 声明 Style 变量 矩形边框还没有创建时If m_Layer.AllFeatures.Coun设置矩形边框样式 Set tempStyle=New MtempStyle.RegionPattern=miPatternNoFill 设置 Style 的矩形tempStyle.RegionBorderColor=255 设置 Style 的矩形边框颜色 tempStyle.RegionBorderWidth=2 置 Style 的矩形边框宽度 在图层创建大小为Set tempFea=Map2.FeatureFactory.CreateRegion(Map1Set m_Fea=m_Layer.AddFeature(tempFea)添加矩形边框 否则,根据 Map1 的视野变化改变矩形边框的大小和位置 With m_Fea.Parts.Item(1).RemoveAll 除去已有的添加大小和位置已变化的矩形边框的四个顶.AddXY Map1.Bounds.XMin,Map1.Bounds.YMin.AddXY Map1.Bounds.XMax,Map1.Bounds.YMin .AddXY Map1.Bounds.XMax,Map1.Bounds.YMax .AddXY Map1.Bounds.XMin,Map1.Bounds.YMax End With m_Fea.Upda End Sub Private Sub Map2_MouseDown(Button As Integer,Shift As Integer,X As Single,Y ADim MapX As Double 定义 x 坐标变量 Dim MapY As Double 定义 y 坐标变量 把屏幕坐标转换为地图坐标 Map2.ConvertCoord X,Y,MapX设置主图的中心 x 坐标和 y 坐标 Map1.CenterX=MapX Map1.CenterY=MapY b VC 下鹰眼图实现的思路与现一定的功能。如利用下面的两句代码创建两个控件,分别用来显示主图和鹰眼图。m_ctrlMapX.Create(NULL,WS_VISIBLE,CRect(0,0,300,300),this,IDC_MAP1);m_eagleMapx.Create(NULL,WS_VISIBLE,CRect(0,0,400,400),this,IDC_MAP2);另外在初始化程序时,还需创建一个图层,用于显示鹰眼图上矩形 Feature。m_eagleMapx.GetLayers().CreateLayer(RectLayer);鹰眼图的主要功能是在主图发生变化时,在鹰眼图上用变化的矩形框来显示当前主图显示的边界。这里主要利用 MapX 控件内置的消息 MAPX_DISPID_MAPVIEWCHANGED 映射的函数来完成该功能,当主视图发生变化时,MapX 控件发出消息,调用 OnMapViewChanged()函数进行相应的处理,所以主要的代码在OnMapViewChanged()函数中实现。ON_EVENT(CMapXSampleView,IDC_MAP1,MAPX_DISPID_MAPVIEWCHANGED,OnMapViewChanged,VTS_NONE)/主视图发生变化时,调用如下的函数 void CMapXSampleView:OnMapViewChanged()double X1,Y1,X2,Y2;/声明坐标变量 double x2,y2,x4,y4;/声明坐标变量 VARIANT scx,scy,scx1,scy1;/声明屏幕坐标变量 VARIANT mapx1,mapy1,mapx2,mapy2;/声明地图坐标变量 /声明 FeatureFactory 变量并获取缺省值 CMapXFeatureFactory cFactory=m_eagleMapx.GetFeatureFactory();CMapXLayer layer;/声明图层变量 CMapXFeature feature;/声明 Feature 变量 CMapXFeatures features;/声明 Features 变量 CMapXPoints points;/声明 Points 变量 points.CreateDispatch(points.GetClsid();CMapXRectangle rect;/声明矩形变量 rect.CreateDispatch(rect.GetClsid();/获取主图的边界,根据这个边界值,在鹰眼图上添加一个矩形 Feature rect=m_ctrlMapX.GetBounds();X1=rect.GetXMin();/获得矩形左上顶点 x 坐标 Y1=rect.GetYMin();/获得矩形左上顶点 y 坐标 X2=rect.GetXMax();/获得矩形右下顶点 x 坐标 Y2=rect.GetYMax();/获得矩形右下顶点 y 坐标 /进行坐标变换 m_eagleMapx.ConvertCoordV(&scx,&scy,COleVariant(X1),COleVariant(Y1),miMapToScreen);m_eagleMapx.ConvertCoordV(&scx1,&scy1,COleVariant(X2),COleVariant(Y2),miMapToScreen);m_eagleMapx.ConvertCoordV(&scx,&scy1,&mapx1,&mapy1,miScreenToMap);m_eagleMapx.ConvertCoordV(&scx1,&scy,&mapx2,&mapy2,miScreenToMap);/获得矩形框顶点坐标 x2=mapx1.dblVal;y2=mapy1.dblVal;x4=mapx2.dblVal;y4=mapy2.dblVal;/得到添加矩形 Feature 的图层 layer=m_eagleMapx.GetLayers().Item(RectLayer);features=layer.AllFeatures();/没有添加矩形 Feature 的图层,则新建 if(features.GetCount()=0)/添加四个顶点构成一个矩形框 points.AddXY(X1,Y1);/添加顶点 1 points.AddXY(x2,y2);/添加顶点 2 points.AddXY(X2,Y2);/添加顶点 3 points.AddXY(x4,y4);/添加顶点 4/创建矩形 Feature COleVariant vtPoints;vtPoints.vt=VT_DISPATCH;vtPoints.pdispVal=points.m_lpDispatch;vtPoints.pdispVal-AddRef();feature=cFactory.CreateRegion(vtPoints);/设置矩形 Feature 的属性 CMapXStyle style=feature.GetStyle();style.SetRegionPattern(miPatternNoFill);/设置矩形的填充方式 style.SetRegionBorderColor(miColorRed);/设置矩形边框颜色 style.SetRegionBorderWidth(2);/设置矩形边框宽度 feature.SetStyle(style.m_lpDispatch);/添加已经创建的矩形 Feature m_eaglefeature=layer.AddFeature(feature);else /否则更新 Feature 的矩形大小与位置 m_eaglefeature.GetParts().Item(1).RemoveAll();/除去已有的顶点 m_eaglefeature.GetParts().Item(1).AddXY(X1,Y1);/添加顶点 1 m_eaglefeature.GetParts().Item(1).AddXY(x2,y2);/添加顶点 2 m_eaglefeature.GetParts().Item(1).AddXY(X2,Y2);/添加顶点 3 m_eaglefeature.GetParts().Item(1).AddXY(x4,y4);/添加顶点 4 m_eaglefeature.Update();/更新 Feature 属性 /更新显示图层 layer.Refresh();MsComm 组件介绍及通讯编程组件介绍及通讯编程:一、引言引言:随着计算机应用领域的不断扩展,计算机之间的远程通信用得越来越广泛.进行计算机通信需要调制解调器(modem),电话线及通信软件.尽管市面上有许多商品通信软件,但是在许方情况下商品通信软件并不能满足实际工作的需要.这是因为通用的通信软件虽然能发送和接收文件,但有些时侯是不适用的.例如我们在开发一个 EDI(电子数据交换)应用系统时,就需要把接收到的某个单证直接地自动地放到一个数据库中,作为一条记录。这种情况下采用通用的通信软件就不行了,需要开发自己专用的通信软件。过去,开发通信软件对于一般的应用软件开发人员来说是比较困难的。而现在这件事已经变得容易多了。本文介绍如何利用 VB5.0 和 MSCOMM 控件开发通信软件。要想自己开发通信软件,除了要掌握 VB5.0 的基本编程语言以外,还需知道一些微机通信的基本原理。如有关串行端口及调制解调器的基本知识,调制解调器的使用手册及 AT 命令集等。这在许多书中都可以找到。二、有关预备知识有关预备知识-在 PC 机串行端口与调制解调器进行连接时,有十几根线进行信号传输。对于用MSCOMM 控件编制通信软件来说,只需了解以下五根线的代号及作用.以下五根线的高电平/低电平状态分别对应 MScomm 控件的相应属性的 True/False 值。(1)DTR 线:PC 发往 MODEM,表示 PC 机是否已准备好。(2)RTS 线:PC 发往 MODEM,表示 PC 机是否允许 modem 发回数据.(3)DSR 线:MODEM 发往 PC,表示 MODEM 是否已做好操作准备(4)CTS 线:MODEM 发往 PC,表示 MODEM 是否允许发送数据(5)CD 线:MODEM 发往 PC,表示 MOEDM 已经与呼叫的远方 MODEM 处于连结状态 三、MSCOMM 控件的属性及事件 VB5.0 所带的通信控件 MSCOMM 易学易用。它只有约 30 个属性和事件。可以从 VB5.0 的联机帮助中找到它的全部资料。本文简述它的主要属性及事件,并加已归类整理。以下用MSCOMM1 表示在窗体上设置的一个 MSCOMM 控件的名称 (一)通信参数设置 (1)CommPort 属性 语法:MSCOMM1.CommPort=Value 作用:设置或返回联接 MODEM 的串口的编号。值:用 1,2,.表示串口 COM1,COM2.(2)Settings 属性 语法:MSCOMM1.Settings=Value 作用:设置或返回通信参数。值:String 型。例入用19200,N,8,1表示传输速率为 19200bps,没有奇偶校验 位,8 位数据位,1 位停止位。(3)Handshaking 属性 语法:MSCOMM1.Handshaking=Value 作用与值:设置或返回硬件握手协议。指的是 PC 机 MODEM 之间为了控制流速而约定的内部协议。0 没有握手协议。不考虑流量控制。1XON/XOFF。即在数据流中嵌如控制苻来进行流控。2RTS/CTS。既由信号线 RTS/CTS 自动进行流量控制。3 两者皆可。注:实践中我们发现选用 2(即 RTS/CTS)是很方便的。(二)打开/关闭端口(4)PortOpen 属性 语法:MSCOMM1.PortOpen=Value 作用:打开或关闭端口。值:Boolean 型。设为 True/False 可以打开/关闭端口。(三)发送数据(5)OutBufferSize 属性 语法:MSCOMM1.OutBufferSize=Value 作用:设置或返回传输缓冲区大小。值:Integer 型。传输缓冲区的字节数。例如可选 1024。(6)OutPut 属性 语法:MSCOMM1.OutPut=Variant 作用:向传输缓冲区写数据流。值:Variant 型变量。注:传输文本数据时,应将 String 型数据放入 Variant 变量,传输二进制数据(即按字节)时,应将 Byte 型数组数据放入 Variant 变量 (四)接收数据(7)InBufferSize 属性 语法:MSCOMM1.InBufferSize=Value 作用:设置或返回接收缓冲区大小。值:Integer 型。接收缓冲区的字节数。例如可选 1024。(8)InputMode 属性 语法:MSCOMM1.InputMode=Value 作用:设置或返回接收数据的数据类型。值:0 用 Input 属性接收文本型数据。用 Input 属性接收二进制数据。(9)InBufferCount 属性 语法:MSCOMM1.InBufferCount=Value 作用:返回接收缓冲区中已传到但还未取走的字符个数。值:Integer 型。(10)Input 属性 语法:MSCOMM1.Input=Variant 作用:将接收缓冲区中收到的数据读入变量。值:Variant 型变量。注:当 InputMode 属性值为 0(文本模式)时,变量中含 String 型数据。当 InputMode 属性值为 1(二进制模式)时,变量中含 Byte 型数组数据。(五)状态控制(11)DTREnabled 属性(12)RTSEnabled 属性(13)DSRHolding 属性(14)CTSHolding 属性(15)CDHolding 属性 以上五个属性即如二所述,均取值 TRUE/FALSE,用于读取或控制 pc 机与 modem 之间的交互状态。需运用好。例如,应在读取到 DSRHolding 属性值为 TRUE 时再向 MODEM 发出命令。应当在载波检测到以后(CDHolding 属性为 TRUE)时再向 MODEM 发送数据。(六)事件 MSCOMM 控件把实际上是十七个事件归并为一个事件 OnComm,用属性 CommEvent 的十七个值来区分不同的触发时机。主要有以下几个:(1)CommEvent=1 时:传输缓冲区中的字符个数已少于 Sthreshold(可设置的属性值)个.(2)CommEvent=2 时:接收缓冲区中收到 hreshold(可设置的属性值)个个字符.利用此事件可编写接收数据的过程。(3)CommEvent=3 时:CTS 线发生变化.(4)CommEvent=4 时:DSR 线发生变化.(5)CommEvent=5 时:CD 线发生变化.(6)CommEvent=6 时:检测到振铃信号.四、通信软件参数设置在自己编写的通信软件中,应包含进行通信参数设置的功能。主要就是可以设置端口号,波特率,数据位,停止位,奇偶校验位及设置硬件握手协议。可在一个窗体上用下拉列表框,选择钮等由用户来选择。保存时,利用 VB5.0 的 Settings 函数将这些参数存储在 WINDOWS95 的系统注册表中。每次运行该软件时,先用 GetSettings 函数调出这些参数 commport,Settings,Handshaking 等属性赋值,来进行通信参数设置。计算机网络计算机网络 OSI 模型模型 OSI 模型有 7 层,其分层原则如下:?根据不同层次的抽象分层?每层应当实现一个定义明确的功能?每层功能的选择应该有助于制定网络协议的国际标准?各层边界的选择应尽量减少跨度接口的通信量?层数应足够多,以避免不同的功能混杂在同一层中,但也不能太多,否则体系结构会过于庞大。下面层最低层开始介绍 OSI 网络模型的各层:物理层:透明地传输比特流。数据链路层网络层传输层会话层表示层应用层数据链路层:在相邻节点之间无差错地传输帧。网络层:在源和目的结点之间选择路由和控制拥塞。传输层:在端到端之间可靠地传输报文。会话层:进行会话管理和会话同步。表示层:数据格式转换,数据加密解密。应用层:为用户使用网络提供接口或手段 物理层 用用 VB 及及 MSComm 组件实现简单的通讯程序组件实现简单的通讯程序:利用 VB 设计了基于数据链路层滑动窗口数据传输协议的网络通信程序。该程序实现了无限制的单工协议、一位滑动窗口协议和选择性重传协议等三种数据链路层网络通信协议。在程序设计时,针对不同协议的特点,采用模块化的设计思路设计了对应的程序操作窗体。该程序由引导界面和三种通信协议的操作界面组成。其中引导界面主要实现通信协议的选择、通信程序的运行以及退出系统等功能。而协议的操作界面主要实现通信端口的选择、通信双方联接的建立、数据的发送和接收等。3.1 引导窗体设计引导窗体设计 引导窗体窗体主要实现通信协议的选择、通信程序的运行以及退出系统等功能。该窗体由两个操作界面组成,如下图 1、图 2

    注意事项

    本文(GPS通讯程序设计.pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开