Извлечение идентификатора из пакета данных GPS - PullRequest
0 голосов
/ 05 февраля 2011

Я пытаюсь настроить устройство GPS для моих систем.Устройство GPS отправляет пакет данных на мой IP в следующем формате:

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

Я не могу извлечь широту, долготу и другую информацию, но я не могу извлечь идентификатор трекера из строки.

В соответствии с руководством идентификатор в шестнадцатеричном формате. И формат пакета:

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

Я не знаю, что с ним делать, я попытался преобразовать этов шестнадцатеричный код, но это не сработало.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 05 февраля 2011

Как насчет дополнительной информации? Какой 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, но я думаю, что идентификатор может быть преобразован в строку в шестнадцатеричном формате примерно так:

$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, как в примере с документацией)

...