//端口号和波特率
System.IO.Ports.SerialPort _serialPort = new System.IO.Ports.SerialPort("COM4", 4800);
StreamWriter t = new StreamWriter(gpsLogFilePath);
_serialPort.ReadBufferSize = 1024;//缓存
_serialPort.Open();
for (int i = 0; i < maxRow; i++)
{
char[] mys = new char[1024];
_serialPort.Read(mys,0,1024);
t.Write(mys);
if (message.StartsWith("$GPGGA"))//开始分析
{
string[] me = message.Split(new Char[] { ',' });
if (me[2].Length > 0)
{
position[0, N] = me[2].Trim();
position[0, E] = me[4].Trim();
i++;
}
}
}
t.Close();
_serialPort.Close();
/以下是gps数据格式分析/
以下文章出自:
http://blog.ednchina.com/qhchaowei/
GPS 接收OEM 板的型号甚多、性能各异,但它们的GPS定位信息串行输出格式大多采用美国国家海洋电子协会制定的NMEA-0183 通信标准格式。其输出数据采用的是ASCII码,内容包含了纬度、经度、高度、速度、日期、时间、航向以及卫星状况等信息,常用语句有6 种,包括GGA、GLL、GSA、GSV、RMC 和 VTG。我们也可以通过GPS 专用设置软件或普通的串口调试软件发送相应的命令语句给OEM 板,把GPS OEM 板设置为每隔若干毫秒发送哪种或哪几种NMEA 语句,然后该OEM 板将这些设置参数存储到板上的EEPROM 芯片内,此后该OEM 板将按照这些设置每隔相应的毫秒数发送出一个或几个GPS 输出NMEA 语句。根据不同的应用需要,设置选择不同的输出记录语句以及它们的发送时间间隔,如本系统我们只关心其时间、经纬度、海拔高度、地面速度信息以及卫星使用数信息,因而可只选用GGA,VTG记录语句并设成每1s发送一次。不过须注意,这些设置信息只在系统本次上电,并设置后方有效,在下次重新上电时需重新设置。
一条$GPGGA 语句包括17个字段:语句标识头,世界时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,水平精确度,海拔高度,高度单位,大地水准面高度,高度单位,差分GPS数据期限,差分参考基站标号,校验和结束标记(用回车符<CR>和换行符<LF>),分别用14个逗号进行分隔。该数据帧的结构及各字段释义如下:
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR><LF>
$GPGGA:起始引导符及语句格式说明(本句为GPS定位数据);
<1> UTC时间,格式为hhmmss.sss; <2> 纬度,格式为ddmm.mmmm(第一位是零也将传送); <3> 纬度半球,N或S(北纬或南纬) <4> 经度,格式为dddmm.mmmm(第一位零也将传送); <5> 经度半球,E或W(东经或西经) <6> 定位质量指示,0=定位无效,1=定位有效; <7> 使用卫星数量,从00到12(第一个零也将传送) <8> 水平精确度,0.5到99.9 <9> 天线离海平面的高度,-9999.9到9999.9米 M 指单位米 <10> 大地水准面高度,-9999.9到9999.9米 M 指单位米 <11> 差分GPS数据期限(RTCM SC-104),最后设立RTCM传送的秒数量
<12> 差分参考基站标号,从0000到1023(首位0也将传送)。
* 语句结束标志符 xx 从$开始到*之间的所有ASCII码的异或校验和 <CR> 回车 <LF> 换行
对于VTG信息我们只需要以Km/h 为单位的速度信息,就不再累述其格式。
MTI-3板输出的信息可通过串口调试工具在PC机的超级终端中显示。如在PC机上看到的实时接收GPGGA语句为: $GPGGA,114641,3002.3232,N,12206.1157,E,1,05,12.9,53.2,M,11.6,M,,*4A 这是一条GPS定位数据信息语句,意思为世界(格林威治)时间为11时46分41秒,位置在北纬30度2.3232分,东经122度6.1157分,定位有效,接收到5颗卫星,水平精度12.9米,天线离海平面高度53.2米,所在地离地平面高度11.6米,校验和为4AH。
从GPS 板接收下来的数据流是文本字符串。可根据GPS 输出数据NMEA-0183 通信标准格式中定义的各种记录语句的结构组成特点,编制程序解析其中包含的有用信息。但在此需要强调的是,GPS 输出记录中各ASCII 码字段的位数可能随着实际测量计算出的定位数据的不同而有所变化,因此在进行识别、分解、解析记录中各字段时必须以逗号分割符“,”作为各字段的分割标志,而不应该以各字段的字符位数作为分割各字段的依据,否则将会导致严重的数据错位。