Delphi中利用MSCOMM控件进行GPS数据采集

1、准备

GPS(Global Positioning System),即全球定位系统,利用24颗GPS卫星的测距和测时功能进行全球定位,在许多系统中,如机场导航系统,出租车辆管理和调度系统、江河流域的灾害信息管理和预测系统中,GPS得到了广泛的应用。本文利用MSCOMM控件实现了GPS数据的采集,可为信息管理和指挥调度等提供定位数据。

本文采用GPS的异步串行传送方式,将GARMIN 12C按NMEA-0183协议输出的数据采集到了微机,并将接收到的地理坐标转换成为直角坐标。

在DELPHI 5.0 IDE中新建一工程,名为GPSReceiver,在主界面上放置四个TEDIT控件,用于显示接收到的地理坐标和转换后的直角坐标,其“name”属性分别为:Editlatitude、Editlongitude、Editxcoord和Editycoord;在四个TEDIT控件下方放置三个按钮,用于数据接收的控制和退出程序,其“Caption”属性分别为“接收”、“断开”和“返回”;在界面上任意位置放置一个Ttimer控件、其属性interval值为“1000”,主要用于每隔一秒接收一次GPS数据;一个TMSCOMM控件。程序运行后的界面如图1所示:

图1

2、编写代码

1) 在FORM的implementation部分添加以下声明

var
nn,x,y,sm,n,weidud,jinchad,firstpxl,secondpxl,a,b,longitude,longitudemargin,latitude:double;
weidustr,weidustrcpy,longitudestr1cpy,longitudestrccpy,
weidustr1,weidustr2,jinchastr,jinchastr1,jinchastr2,longitudestr1,
longitudestr11,longitudestr12,longitudestrc,longitudestrc1,longitudestrc2:string;
gpsstrlist:tstringlist;
gpsstr,gpsstrcpy:string;
gpsstrlen:integer;

2)在FORM的FORMSHOW事件中添加如下代码:

procedure Tmainfrm.FormShow(Sender: TObject);
begin
mscomm1.CommPort:=1; //默认串口1
mscomm1.InBufferSize:=1024;
mscomm1.Settings:='600,n,8,1'; //波特率为600
if not mscomm1.PortOpen then
mscomm1.PortOpen:=true; //打开串口
mscomm1.InBufferCount:=0;
mscomm1.RThreshold:=512;
mscomm1.InputLen:=0;
timer1.Enabled:=false; //关闭定时器
a:=6378245.0; b:=6356863.0; //参考椭球的长短轴
firstpxl:=(a*a-b*b)/a/a; //第一偏心率
secondpxl:=(a*a-b*b)/b/b; //第二偏心率
end;

时间: 2024-08-31 15:54:55

Delphi中利用MSCOMM控件进行GPS数据采集的相关文章

DELPHI中利用TreeView控件建立目录树

关于TreeView的使用,还可以参看:联合使用TreeView 组件 TreeView是一个显示树型结构的控件,通过它能够方便地管理和显示具有层次结构的信息,是Windows应用程序的基本控件之一.DELPHI虽然具有比较强大的文件管理功能,提供了多个用于文件管理的标准控件,如DriveComboBox.DirectoryListBox.FileListBox等,通过设置它们的属性,使其建立起联系,甚至不用编写一行程序,我们就可以实现在不同的目录之间进行切换,然而这样的目录切换只适用于进行文件

在 C++ Builder中利用串行通信控件编程

摘要:串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛.本文介绍了在C++ Builder中如何利用串行通信控件进行串行通信编程. 一.引言 目前,在用计算机进行数据传输时,常用的是串行通信方式.用C++ Builder来编写串行通信程序时,可以调用Windows API函数,也可以利用VB中的MSComm控件. 利用 API函数编写实际应用程序时,往往要考虑多线程的问题,这样编出来的程序不但十分庞大,而且结构比较复杂,继承性差,维护困难.但是使用串行通信控

ASP中利用OWC控件实现图表功能详解

控件|图表|详解 在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图,簇状柱型图,折线图的使用方法.OWC的更多功能,属性可参加MSOWCVBA.chm帮助文件(在office 2000的文件夹下大家自己找). testOWC.asp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <

串口通信-VB在components中添加MSComm控件

问题描述 VB在components中添加MSComm控件 VB中在components添加mscomm控件时为什么会显示"--could not be loaded"??求解...谢谢 解决方案 VB.NET直接用SerialPort控件. 解决方案二: MFC添加两个MSComm控件后提示'CMSComm' : 'class' type redefinition

C#里能不能实现像delphi 中的srollbox 控件功能?

问题描述 C#里能不能实现像delphi中的srollbox控件功能呢?在C#2005中我没有找到这个控件,有谁知道的吗..?谢谢:) 解决方案 解决方案二:自己顶一下...有谁知道吗...?谢谢!

ASP中利用OWC控件实现各种统计图

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>ASP中利用OWC控件实现各种统计图</title> </hea

VB中利用第三方控件实现QQ垂直菜单

编者的话:经过一个月的前期准备,第三方控件推荐今日正式开始,今天推荐的控件是由网友伍学慧提供的,小编在此代表所有网友对他表示感谢. 源代码包中为VerticalMenu控件,请下载后解压测试 使用示例: QQ是我们经常使用的软件之一.相信大家对QQ那样的界面再熟悉不过了.在这,我向大家推荐一个在VB中能轻松实现这种类似于QQ垂直菜单的第三方控件VerticalMenu. 下面我就结合实例(开发环境为Visual Basic 6.0,windowsXP)讲一下运用VerticalMenu控件开发程

在VC++6.0中利用串行通信控件

目前,在用计算机进行数据传输时,常用的是串行通信方式.在Visual C++的编程中,既可以用Windows API函数进行串行通信编程,也可以利用环境自带的控件进行编程.利用 API函数编写实际应用程序时,往往要考虑多线程的问题,这样编出来的程序不但十分庞大,而且结构比较复杂,继承性差,维护困难.但是使用串行通信控件就相对简单一些,而且功能强大,性能安全可靠. 本文以Microsoft Communications Control(version 6.0)为例,介绍串行通信控件在VC++中的使

VB中利用第三方控件实现软件在线升级

大家对金山毒霸.瑞星等杀毒软件的在线升级一定不陌生吧?它们可以利用在线升级程序进行在线升级,无需用户访问网站下载.这样的功能的确对于使用者来说是十分方便的.那么,您是否也想为您的软件添加方便的在线升级的功能呢?下面介绍一个第三方控件,能够帮你非常容易地就实现. bkDLControl控件一个可以快速实现在线下载的控件,它在下载的同时通过进度条显示进度.你可以编写当其下载完成后的事件,这样我们就可以轻松达到在线升级的目的. 要了解该控件强大便捷的功能,下面我们就通过一个实例来讲解. 第一步:首先启