我正在尝试为我的系统配置GPS设备。 GPS设备以下列格式将数据包发送到我的IP:
$$�W��¬ÿÿÿÿ™U042903.000,A,2839.6408,N,07717.0905,E,0.00,,230111,,,A*7C|1.2|203|0000÷
我能够提取纬度,经度和其他信息,但我无法从字符串中提取跟踪器ID。
根据手册,ID为十六进制格式。数据包的格式为
$$<L(2 bytes)><ID(7 bytes)><command (2 bytes)><data><checksum (2 bytes)>\r\n
我不知道该如何处理它,我已经尝试将其转换为十六进制..但它没有用。
非常感谢任何帮助。
答案 0 :(得分:0)
如何获取更多信息?什么GPS?什么接口(USB,串口)?你在用什么语言学习?
您的数据肯定看起来很奇怪。根据我对GPS数据的经验,它通常是字母数字和分隔符,但看起来你有一个损坏的字符串或非字母数字值。
您提供的GPRS手册解释了格式:
$$ - 2 bytes - in ASCII code (Hex code: 0x24)
L - 2 bytes - in hex code
ID 7 bytes - in the format of hex code.
For example, if ID is 13612345678, then it will be shown as follows:
0x13, 0x61, 0x23, 0x45, 0x67, 0x8f, 0xff.
command - 2 bytes - hex code
如果我理解正确,$$之后和数据字段之前的乱码字符不是可打印的ASCII字符。它们是实际的数值,一次提供一个字节。如果您将每个字节转换为十六进制格式的字符串并显示它,您应该看到我的意思。
我不记得我的PHP,但我认为ID可以通过以下方式形成十六进制格式的字符串:
$s = GetYourGPRSStringFromWherever()
$sID = sprintf("0x%02x%02x%02x%02x%02x%02x%02x", $s[4], $s[5], $s[6],
$s[7], $s[8], $s[9], $s[10]);
(同样,根据文档的例子,删除或忽略任何0xFF值)