16个版本 (10个重大更改)
0.11.0 | 2024年6月13日 |
---|---|
0.10.0 | 2022年10月13日 |
0.9.0 | 2022年1月6日 |
0.8.0 | 2021年5月26日 |
0.6.0 | 2020年11月18日 |
#7 在 地理空间
每月 2,620次下载
用于 mic2
335KB
6.5K SLoC
Rust的NMEA解析器
此Rust crate旨在涵盖所有 AIS 语句和与 NMEA 0183 标准一起使用的最重要的 GNSS 语句。它支持AIS A类和AIS B类。
用法
在您的 Cargo.toml
文件中包含以下片段
[dependencies]
nmea-parser = "0.11.0"
以下示例代码片段使用crate解析给定的NMEA语句并打印一些解析字段。它依赖于 unwrap()
函数以简化示例。在实际应用中需要适当处理 None
情况。
use nmea_parser::*;
// Create parser and define sample sentences
let mut parser = NmeaParser::new();
let sentences = vec![
"!AIVDM,1,1,,A,H42O55i18tMET00000000000000,2*6D",
"!AIVDM,1,1,,A,H42O55lti4hhhilD3nink000?050,0*40",
"$GAGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*56",
];
// Parse the sentences and print some fields of the messages
for sentence in sentences {
match parser.parse_sentence(sentence)? {
ParsedMessage::VesselDynamicData(vdd) => {
println!("MMSI: {}", vdd.mmsi);
println!("Speed: {:.1} kts", vdd.sog_knots.unwrap());
println!("Heading: {}°", vdd.heading_true.unwrap());
println!("");
},
ParsedMessage::VesselStaticData(vsd) => {
println!("MMSI: {}", vsd.mmsi);
println!("Flag: {}", vsd.country().unwrap());
println!("Name: {}", vsd.name.unwrap());
println!("Type: {}", vsd.ship_type);
println!("");
},
ParsedMessage::Gga(gga) => {
println!("Source: {}", gga.source);
println!("Latitude: {:.3}°", gga.latitude.unwrap());
println!("Longitude: {:.3}°", gga.longitude.unwrap());
println!("");
},
ParsedMessage::Rmc(rmc) => {
println!("Source: {}", rmc.source);
println!("Speed: {:.1} kts", rmc.sog_knots.unwrap());
println!("Bearing: {}°", rmc.bearing.unwrap());
println!("Time: {}", rmc.timestamp.unwrap());
println!("");
},
_ => {
}
}
}
示例输出以下行
MMSI: 271041815
Flag: TR
Name: PROGUY
Type: passenger
Source: Galileo
Latitude: 48.117°
Longitude: 11.517°
特性
以下特性包含在crate的发布版本中。有关版本历史记录的详细信息,请参阅 更改日志。
特性 | 描述 |
---|---|
AIS语句 | VDM/VDO类型1-5,9-27 |
GNSS语句 | ALM、DBS、DPT、DTM、GGA、GLL、GNS、GSA、GSV、HDT、MTW、MWV、RMC、VTG、MSS、STN、VBW、VHW、ZDA |
卫星系统 | GPS、GLONASS、Galileo、北斗、NavIC和QZSS |
路线图
以下表格概述了未来版本中将包含的高级更改。优先级基于每个项目的估计重要性和实现难度。直到版本1.0,代码元素的重构和重命名可能发生。
版本 | 分类 | 内容 |
---|---|---|
0.11 | AIS | 版本6-8的VDM/VDO类型 |
1.0 | 通用 | 稳定的API,优化,文档改进,更多单元测试,示例 |
1.1 | GNSS | AAM, BOD, BWC, R00, RMB, ROT, RTE, WPL, ZTG, APB, GBS, RMA, GRS, GST, MSK, STN, VBW, XTE, XTR |
许可证
本软件包遵循Apache 2.0许可证,包括责任和保修声明。
依赖项
~5MB
~86K SLoC