Код: Выделить всё
protected function processLocationUpdate($hexData)
{
if (strlen($hexData) >= 34) {
$latitudeHex = substr($hexData, 18, 6);
$longitudeHex = substr($hexData, 24, 8);
$latitude = hexdec($latitudeHex) / 1000000;
$longitude = hexdec($longitudeHex);
if ($longitude >= 0x80000000) {
$longitude -= 0x100000000;
}
$longitude /= 1000000;
$this->info("GPS Location - Latitude: " . $latitude . ", Longitude: " . $longitude);
$this->info("Raw location data (hex): " . $latitudeHex . " " . $longitudeHex);
} else {
$this->error("Received message does not contain enough data for a location update.");
}
}
Код: Выделить всё
Raw payload: 78780a13040602000102c51db60d0a
Raw payload: 7878222204010101121dc000a39db508a59d9c000400019d01f956003bda00000002c6b3280d0a
Кто-нибудь может помочь мне разобраться, как правильно расшифровать эти шестнадцатеричные значения, или уточнить если что-то не так с протоколом, который я использую? Будем очень признательны за любую помощь!
Спасибо!
Я написал функцию PHP для декодирования шестнадцатеричных значений GPS-трекера на основе протокола GT06. . Я ожидал извлечь правильные значения широты и долготы из полученных необработанных данных. Однако результаты постоянно неверны и показывают неправильные сведения о местоположении. Я также просмотрел скрипт GitHub для аналогичного декодирования, но не смог понять, как он работает. Я попытался нанять фрилансеров для помощи, но они не смогли решить проблему, предполагая, что, возможно, проблема связана с протоколом, который я использую.
Подробнее здесь: https://stackoverflow.com/questions/790 ... 6-protocol