我最近买了一个GPS的模块,直接把模块的UART连到现成的单片机板子RS232上。
但是现在接收数据解析的过程出现了问题,希望遇到过的或者知道问题所在的朋友们指点指点。
我写了一个GPS数据的解析程序烧到单片机,程序功能是:从串口一个字符一个字符地接收GPS数据,然后动态地解析。
,最后在液晶屏上显示解析出的时间、经纬度的信息。
出现的问题是这样的:我将单片机连到电脑上,从超级终端发送GPS数据(比如:$GPGGA,081420.304,,,,,1,04,5.4,73.8,M,4.8,M,,0000*52)到单片机,然后单片机能解析数据,当我在串口终端只发一条$GPGGA,,,,,*数据,能够正确解析并显示解析结果到终端和液晶屏上,或者我发两条$GPGGA,,,,,,,,,* 或者任意两条协议数据的时候也能正确解析出来,但是当我发三条或者一长串GPS数据的时候,就只看到发送出去了,但是没有任何解析的结果出现,好像解析失灵了。
另外将GPS模块UART直接接到单片机的RS232,GPS模块连续地往单片机串口发送数据,可是出现了液晶屏上有时候显示一次经纬度数据就静止不更新 或者干脆什么都不显示。但是按我的程序,应该是显示的时间,经纬度都随着接收的数据动态更新的。
不知道怎么回事,求高手分析分析可能是什么原因引起的,怎样解决~
另:
解析GPS数据的程序应该是好用的,因为只发一条或者两条$GPGGA,$GPRMC的时候,能够正确解析并显示想要的信息。但是一旦发送的数据量一多就出现没有反应,程序失效。
另外RS232与GPS模块的连接也是好用的,因为可以将GPS原始数据直接显示在液晶屏上。
GPS模块的波特率是4800的,频率是1Hz,从串口终端的输出来看,是1秒出现6条数据,也就是GPRMC,GPGGA,GPGSV,GPGSA的组合,我只需要GPRMC和GPGGA的内容,也就是其他的几种接收了不作处理。
另外我单片机的程序的波特率也是设置的跟GPS模块一样的,保持一样,应该不是波特率不匹配的问题。
到底是怎么回事呢,有没有朋友遇到过,可是怎样解决呢? |