Delphi中利用MSCOMM控制項進行GPS資料擷取

來源:互聯網
上載者:User

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;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.