0

我正在尝试为我的系统配置 GPS 设备。GPS设备以以下格式将数据包发送到我的IP:

$$�W��¬ÿÿÿÿ™U042903.000,A,2839.6408,N,07717.0905,E,0.00,,230111,,,A*7C|1.2|203|0000÷ 

我能够提取纬度、经度和其他信息,但无法从字符串中提取 Tracker ID。

根据手册,ID是十六进制格式。数据包的格式是

$$<L(2 bytes)><ID(7 bytes)><command (2 bytes)><data><checksum (2 bytes)>\r\n

我不知道如何处理它,我尝试将其转换为十六进制..但它没有用。

任何帮助将不胜感激。

4

1 回答 1

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 值)

于 2011-02-05T07:21:41.570 回答