Как насчет дополнительной информации? Какой 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, как в примере с документацией)