首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

读gps数据有关问题

2012-07-31 
读gps数据问题char g_Buff[255]int g_Pos 0void CSerialWx::OnEvent ( EEvent eEvent, EError eError

读gps数据问题
char g_Buff[255];
int g_Pos = 0;

void CSerialWx::OnEvent ( EEvent eEvent, EError eError )
{
wxChar c;
DWORD dwRead;
CGpsParseWx::TGpsParamDataInfo inParam;
CGpsParseWx::TGpsParamStringInfo outParam;

/* 初始化一些数据 */
memset( &inParam,0,sizeof(CGpsParseWx::TGpsParamDataInfo) );
memset( &outParam,'\0',sizeof(CGpsParseWx::TGpsParamStringInfo) );

if ( eEvent != EEventRecv )
return;

/* 从串口中读一个字节并且确定是'$'开始处理数据 */
if ( ERROR_SUCCESS != Read( &c,1,&dwRead ) )
{
wxMessageBox( wxT("Unable to read COM-port"),wxT("Read Port"),0,NULL,200,200 ); 
return;
}
g_Pos = g_Pos%255;
g_Buff[g_Pos++] = c;

if ( 36 != c && 36 != g_Buff[0] )
{
g_Pos = 0;
return;
}
else
{
if ( 10 == c)
{
g_Buff[g_Pos] = '\0';
if( !GpsTxtWx.FileWrite( g_Buff,wxStrlen(g_Buff),wxT("gps.txt")))
{
wxMessageBox( wxT("Unable to write gps.txt"),wxT("Write File"),0,NULL,200,200 );
return;
}
//解析一行gps数据 
GpsParseWx.GpsDataParse( g_Buff, &inParam );
// 经纬度格式转换 
GpsParseWx.LatitudeLongitudeFormatChange( &inParam );
// gps数据解析后格式转化 
GpsParseWx.GpsDataInfoToChar( &inParam,&outParam);
g_Pos = 0;
memset( g_Buff,'\0',wxStrlen(g_Buff) );
}
}
}

现在又这样的问题:开始到一定时间内读取的都正确,但是到了后期,就不是规则的gps信息

如下:
$GPRMC,,V,,,,,,,,,,N*53
$GPVTG,,,,,,,,,N*30
$GPGGA,,,,,,0,00,99.99,,,,,,*48
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,1,1,00*79
$GPGLL,,,,,,V,N*64
$GPRMC,,V,,,,,,,,,,N*53
$GPVTG,,,,,,,,,N*30
$GPGGA,,,,,,0,00,99.99,,,,,,*48
$GPGSA,A,1,,,,,,,,,,,,,99.99,9,PG
$G,,VT30,,,,A,,,9,PG
$G,,VT30,,,,A,,,9,PG
$G,,VT30,,,,A,,,9,PG
$G,,VT30,,,,A,,,9,PG
$G,,VT30,,,,A,,,9,PG
$G,,VT30,,,,A,,,9,PG
$G,,VT30,,,,A,,,9,PG
$G,,VT30,,,,A,,,9,PG
$G,,VT30,,,,A,,,9,PG
$G,,VT30,,,,A,,,9,PG
$G,,VT30,,,,A,,,9,PG


[解决办法]
串口设置都是按说明设的不?
[解决办法]
友情顶!
[解决办法]
这个应该不是你的程序问题,最好检查一下你的GPS设备,
另外,"$G,,VT30,,,,A,,,9,PG"这一行貌似也是符合GPS格式规范的,最好去查一下

[解决办法]
做过类似的。数据源出错可能性很小,检查一下是不是串口的 baud rate设的过慢,或者FIFO设置有什么疏漏没。可以借助串口调试助手看一下,确认是不是你的程序问题。
[解决办法]
前面也不对阿,而且GPDTM去哪里了?
[解决办法]
每帧的长度不一定一样 但是逗号数应该是固定的11个 相邻逗号之间表示的内容是明确的 判断头尾和逗号数 再加上校验 应该就问题不大了 最好一个字节一个字节读
[解决办法]
看来楼主需要使用超级终端这个工具,测试一下GPS设备的数据准确性,然后再来分析原因
[解决办法]

探讨
不用了,我这边用windows自带的超级终端文件看接收一切正常,肯定是我程序的事情!

热点排行