1

我试图通过使用 gprmc servlet 的开放 gts 来跟踪设备是 http://192.168.1.99:8080/gprmc/Data?acct=1234&id=test01&code=0xF020&
gprmc=$GPRMC,080701.00,A,3128.7540,N,14257.6714, W,000.0,000.0,180707,,,A*1C

这是我在我的 android 应用程序中尝试的 url 的结构,但服务器没有响应,但是当我尝试使用 gps2opengts 应用程序时, 使用工作服务器的屏幕截图它可以正常工作,所以请告诉哪里是错误...?

4

2 回答 2

0

@维维克,

虽然您已成功在 android 中创建 gprmc 字符串,但您的服务器仍可能不接受该请求,因为您当前的请求包含idhttp 参数,但它应该是dev。OpenGTS 具有acct帐户字符串和dev设备字符串以及gprmcgprmc 字符串的参数名称。您可以使用 Android API 直接获取 gprmc 字符串 - http://developer.android.com/reference/android/location/GpsStatus.NmeaListener.html

于 2013-10-11T04:12:37.687 回答
0

我正在尝试同样的事情,并且有一些阅读要做。首先阅读 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);
于 2013-02-01T11:53:03.800 回答