分析包含 NMEA 句子的日志文件C++
Parsing log files containing NMEA sentences C++
我有多个NMEA句子的日志文件,其中包含相机捕获的地理位置。 其中一个句子的示例:$GPRMC,100101.000,A,3723.1741,N,00559.5624,W,0.000,0.00,150914,,A*63
我的问题是,你认为我该如何开始?只是需要有人把我推向正确的方向,谢谢。
我在 GPSReverse 驱动程序中使用此校验和函数。
string chk(const char* data)
{
// Assuming data contains a NMEA sentence (check it)
// Variables for keeping track of data index and checksum
const char *datapointer = &data[1];
char checksum = 0;
// Loop through entire string, XORing each character to the next
while (*datapointer != ' ')
{
checksum ^= *datapointer;
datapointer++;
}
// Print out the checksum in ASCII hex nybbles
char x[100] = {0};
sprintf_s(x,100,"%02X",checksum);
return x;
}
之后,一些附加到 NMEA 字符串(例如,GGA(:
string re = chk(gga.c_str());
gga += "*";
gga += re;
gga += "rn";
因此,您可以读取 *,计算校验和,并查看它是否与 * 后面的字符串匹配。
在此处阅读更多内容。
每个句子都以"$"开头,以回车符/行结尾 源序列,并且不能超过 80 个字符的可见文本 (加上行终止符(。数据包含在此单个中 行,数据项以逗号分隔。数据本身只是 ASCII 文本,并且可能在某些句子中延伸至多个句子 专用实例,但通常完全包含在一个变量中 长度句子。数据的精度可能有所不同 包含在消息中。例如,时间可以指示为 秒或位置的小数部分可能显示为 3 甚至 4 小数点后的数字。读取数据的程序应 仅使用逗号来确定字段边界,而不依赖于 在列位置上。在 每个句子可以检查,也可以不由阅读的单位检查 数据。校验和字段由一个"和两个十六进制数字组成 表示所有字符之间的 8 位独占 OR,但不是 包括"$"和">"。某些句子需要校验和。
相关文章:
- 加快在C++中读取/处理日志文件的速度
- 如何将消息时间戳写入日志文件?
- 分析包含 NMEA 句子的日志文件C++
- 如何从日志文件中抓取状态代码?(在 C++ 中)
- 未创建日志文件
- 尝试使用 EvtSetChannelConfigProperty() 函数更新最大事件日志文件大小时插入的错误值
- 提升日志:文件轮换
- POSIX C/C++日志文件(VEX V5 Brain)
- boost日志文件无法创建sample.log文件
- 哪个更适合从C++写入敏感的日志文件,在文件描述符上写()或文件上的fprintf()?
- 如何编写日志文件,以便可以使用记事本实时读取它以进行C++
- 如何在QT中使用DEBUG对齐日志文件中的数据?
- Qt - 如何在 30 天后删除日志文件,文件名不固定
- Mac OS X:应用程序可以创建日志文件
- 将断言消息写入日志文件
- 检查日志文件以找出 vcredist.exe 安装失败的原因
- C++同时记录到控制台和日志文件
- 无法创建将包含日志文件的文件夹
- (罗)如何使用相对路径保存日志文件
- boost::log关闭日志文件并打开一个新文件