使用gprmc servlet打开OpenGts

时间:2012-04-06 09:50:07

标签: android gps

我试图通过使用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应用程序中尝试但服务器没有响应但是当我尝试使用gps2opengts应用程序时 screen shot with working server它的工作原理请告诉我这是错误......?

2 个答案:

答案 0 :(得分:0)

我正在尝试同样的事情并且有一些阅读要做。 首先阅读GPRMC http://aprs.gids.nl/nmea/#rmc

的规范

接下来,转到OpenGTS源代码中的类Nmea0183,看看如何生成字符串末尾的校验和(方法calcXORChecksum)。

我做了一个测试,看到你正在使用的校验和(1C)是错误的。它似乎是默认情况下,如果你没有在字符串的末尾附加它,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);

答案 1 :(得分:0)

@Vivek,

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