flutter_extended_nmea
一个可扩展的 NMEA0183 解析器。
查看示例,了解如何使用它。
用法
// 1. declare your sentences (use TalkerSentence and ProprietarySentence)
class AbcSentence extends TalkerSentence {
AbcSentence({required super.raw});
String get data => fields[1];
@override
bool get valid => super.valid && fields.length == 2;
}
// 2. register your sentences
final decoder = NmeaDecoder()
..registerTalkerSentence("ABC", (line) => AbcSentence(raw: line));
// 3. decode a line
final sentence = decoder.decode("\$--ABC,123456789*5D");
// 4. consume your sentences
print(sentence.valid); // true
print(sentence.checksum); // 5D
print(sentence.source); // --
if (sentence is AbcSentence) {
print(sentence.data); // 123456789
}
您也可以将其用作字符串流的 StreamTransformer
final stream = Stream.fromIterable(["\$--ABC,123456789*5D", "\$--DEF,987654321*5D"]);
final transformed = stream.transform(decoder);
transformed.listen((sentence) {
print(sentence.valid); // true
print(sentence.checksum); // 5D
print(sentence.source); // --
if (sentence is AbcSentence) {
print(sentence.data); // 123456789
}
});