我试图通过使用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应用程序时 它的工作原理请告诉我这是错误......?
答案 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