我正在尝试同样的事情,并且有一些阅读要做。首先阅读 GPRMC 的规范http://aprs.gids.nl/nmea/#rmc
接下来,进入OpenGTS源代码中的Nmea0183类,看看你的字符串末尾的校验和(方法calcXORChecksum)是如何生成的。
我做了一个测试,发现您使用的校验和 (1C) 是错误的。它应该是 44。默认情况下,如果您没有在字符串末尾附加校验和,OpenGTS 似乎不会忽略它,因此您始终必须在您的 android 应用程序中计算它并在末尾添加它。如果校验和不正确,则丢弃请求并且不记录任何内容。
最后,确保您在 GPRMC 字符串中使用了正确的日期和时间,否则您将很难在 Web 应用程序的报告中找到它。例如,在您发送的字符串中,日期似乎是 2007 年 7 月 18 日,时间是 GMT 08:07:01。
希望对您有所帮助并期待您的应用。我真的可以使用它。
这就是我在 Nmea0183 的主要方法中所做的(我评论了其他所有内容)。
String gprmc = "$GPRMC,080701.00,A,3128.7540,N,14257.6714,W,000.0,000.0,180707,,,A*44";
int cs = calcXORChecksum(gprmc, false);
System.out.println(Integer.toHexString(cs));
Nmea0183 n;
n = new Nmea0183(gprmc, false);
Print.sysPrintln("$GPRMC : " + gprmc);
Print.sysPrintln(" ==>: " + n.toGPRMC());
Print.sysPrintln("NMEA-0183: \n" + n);