詳細についてはどうですか?どの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文字ではありません。これらは実際の数値であり、一度に1バイトずつ提供されます。各バイトを16進形式の文字列に変換して表示すると、私が何を意味するのかがわかるはずです。
PHPのことはよく覚えていませんが、次のような方法でIDを16進形式の文字列に形成できると思います。
$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値を削除または無視します)