利用C#通过串口提取GPS定位信息

时间:2022-08-02 03:14:21

利用C#通过串口提取GPS定位信息

摘 要: GPS定位信号的提取可以用VB,VC实现,但实际应用时会比较难用。利用c#语言提供的SerialPort类非常简单地实现了GPS定位信号的提取。

关键词: GPS定位信号;C#;SerialPort

全球定位系统(GPS)是一种基于空间卫星导航系统,可在地球上和地球附近提供全天候的位置和时间信息的服务。GPS系统具有高效率、多功能、高精度、操作简便、应用广泛等特点。因此,GPS不仅诸多民用领域广泛应用,在军事领域方面应用更为广泛。

1 GPS信号的格式

GPS接收机工作时会将接收到的GPS导航定位信息通过串口存放在缓存中。只有通过编写程序将各个字段的信息从缓存字节流中提取出来,才能将其转化成我们需要的数据。同任何通讯协议一样,也是通过帧结构完成对各种gps定位信息的提取。对于本文所使用的GARMIN GPS天线板,它发送到计算机的数据主要由帧头、帧尾和帧内数据组成。帧头表明了后续帧内数据结构的组成。每帧都是用回车符和换行符作为帧尾结束标识。“$GPRMC”帧包含了经纬度、速度、时间等定位数据,我们可以通过处理帧头为“$GPRMC”的数据来获得我们需要的定位数据。如果我们需要的数据在其它帧中时,我们则需要处理相应的帧就可以。处理方法与本文中处理“$GPRMC”帧一样。帧头为“$GPRMC”帧的结构中主要包含了时间、位置、纬度、日期、速度等信息。

本文通过用C#语言编写了利用串口来提取GPS信息的程序,在实验时采用的GPS76接收,GPS76的指标为:定位时间、定位精度、动态性能、速度精度。

2 利用C#通过串口提取GPS信息

作为一个基本的串口通信程序,程序需要包含串口选择,波特率选择,打开,关闭,接受数据,显示。

下面开始具体讲解:

第一步,用VS2010创建一个基于C#的winForm项目,并设计界面。

第二步,引入SerialPort的命名间.using System.IO.Ports,

并实例化串口对象private SerialPort my = new SerialPort(),

定义存储GPS文本信息的变量string gpstext = ""。

第三步,添加窗体初始化函数。

第四步:设置串口的端口号,波特率,打开串口。并设计串口接收到数据后的处理程序。

private void buttonOk_Click(object sender, EventArgs e)

{

my.PortName=comboBox1.SelectedItem.ToString();//设置串口端号 my.BaudRate=int.Parse(comboBox2.Text); my.Open();

my.DataReceived+=

my_DataReceived;

}

private void my_DataReceived(object sender, SerialDataReceivedEventArgs e)//串口接收数据事件函数

{

gtext = gtext+ my.ReadExisting(); if(gtext.End

SWith("\r\n"))

{

BeginInvoke(newEventHandler(Update_Data));//执行Update_Data函数

}}

double long1;//存储距离

private void Update_Data(object sender,

EventArgs e)

{string[] ginfo = gtext.Split(',');//按照逗号分割字符串,并把分割结果号存入字符串数组中。以下是提取时间日期等信号,其他信息可以按此方法提取。

for (int i = 0; i < ginfo.Length; i++)

{if (ginfo[i] == "$GPRMC")//检索数据帧。

{if (ginfo[i+2] == "V")

textBox1.Text = ginfo[i+2]+"已定位";

if (ginfo[i+2]=="A")

textBox1.Text=ginfo[i+2]+"未定位";

}}}

gtext="";//清空字符串。

}

第五步:添加退出程序代码

3 连接设备并运行程序

把GPS76的输出设置为NEMA,然后连接到电脑的串口上,打开GPS76,待GPS搜到3颗以上的卫星后,运行程序。程序运行后结果如图1所示:

4 结论

本文利用C#语言封装的SerialPort类,非常容易的通过串口实现了GPS定位信息的提取,方便了工程应用。

参考文献:

[1]徐绍铨等,GPS测量原理及应用[M].武汉:武汉测绘科技大学出版社,1998.126-133.

[2]葛爱学、罗大成、廖守亿、刘志国,基于VC++的GPS软件接收机设计[J].电讯技术,2010,1(50):8-13.

作者简介:

许海峰(1987-),男,硕士研究生,专业方向为信号与信息处理;顔鹏(1987-),男,硕士研究生,专业方向为信号与信息处理;苏仙鹤(1986-),女,硕士研究生,专业方向为信号与信息处理。

上一篇:100G技术及其在光纤通信中的应用 下一篇:基于NP架构的信息控制系统的设计与实现