#nmea #nom #gps #解析器

nmea-0183

使用 nom 5 实现的 NMEA-0183 句子解析器

5 个版本

0.0.5 2019年7月1日
0.0.4 2019年7月1日
0.0.3 2019年7月1日
0.0.2 2019年6月28日
0.0.1 2019年6月28日

#1825解析器实现

每月 下载 40

MIT/Apache

110KB
3K SLoC

NMEA-0183

使用 Nom 编写的 nmea-0183 句子解析器

Travis Build Status documentation

示例

use nmea_0183::sentence::parse;

fn main() {
    // We first need a sentence to parse.
    // According to the NMEA-0183 specification, a sentence ends with <CR><LF>
    let raw_sentence = "$GPGGA,092725.00,4717.11399,N,00833.91590,E,1,08,1.01,499.6,M,48.0,M,,*5B\r\n";
    let parsed_sentence = parse(raw_sentence)
        .expect("Could not parse nmea sentence.");

    println!("{:?}", parsed_sentence);

    /*
    Sentence {
        sentence_type: Parametric,
        talker: GPS,
        message: GGA(GGAMessage {
            time: Some(09:27:25),
            lat: Some(Degree(47.1711399)),
            ns: North,
            lon: Some(Degree(8.339159)),
            ew: East,
            quality: AutonomousGNSSFix,
            num_sv: Some(8),
            hdop: Some(1.01),
            alt: Some(Meter(499.6)),
            sep: Some(Meter(48.0)),
            diff_age: None,
            diff_station: None
        })
    }
    */

}

状态

该解析器处于早期阶段,我根据 U-Blox 接收器协议规范 编写了它,并尽可能地进行了解释。

我根据提供的样本编写了单元测试,但我还没有任何接收器来测试输出。

如果您想改进它,或者如果您发现了一个(众多!)错误,请 打开一个问题,或者更好的是,提交一个拉取请求 :)

如何安装

如果您使用 cargo-edit(我推荐),在您想添加库的项目中打开一个shell并运行以下命令

$ cargo add nmea-0183
      Adding nmea-0183 v0.0.2 to dependencies

如果您不使用,请将库添加到您的 Cargo.toml 依赖中


[dependencies]
nmea-0183 = "*"

许可证

根据您的选择,许可如下:

双 MIT/Apache2 许可更加宽松

依赖

~2MB
~33K SLoC