Парсер GPS Parser (NMEA / GPRMC)

sergeyberezhnoy

Новичок
Добрый день!

Возник вопрос насчет работы парсера.

Мне нужно получить данные с контрольной суммы широту и долготу и отобразить их в Googla maps

Дословно из спецификации:
'Контрольная сумма: 8-битовая сумма (XOR) ASCII кодов всех символов (включая ',') в выражении между символами '$' и '*' (исключая их). результат сложения записываеться в явном виде после '*'.'
Вот несколько 'правильных' строк с правильными значения Контрольной суммы:
$GPRMC,084609.000,A,4640.9561,N,03235.3739,E,0.00,349.30,011214,,,D*66
$GPRMC,084610.000,A,4640.9561,N,03235.3739,E,0.00,349.30,011214,,,D*6E

Я беру считываю контрольную сумму $GPRMC с файла resource.txt . Но мне нужно сделать чтобы данные $GPRMC считывались с таблицы базы данных mysql а не с файла
Сам парсер который нашел.

<?php

// Converts DMS ( Degrees / minutes / seconds )
// to decimal format longitude / latitude
function DMStoDEC($dms, $longlat){

if($longlat == 'lattitude'){
$deg = substr($dms, 0, 2);
$min = substr($dms, 2, 8);
$sec = '';
}
if($longlat == 'longitude'){
$deg = substr($dms, 0, 3);
$min = substr($dms, 3, 8);
$sec='';
}


return $deg+((($min*60)+($sec))/3600);
}

//Set timezone
date_default_timezone_set('Asia/Manila');

//Connect to GPS
$gps = fopen("resource.txt", "r+");


//Read data from GPS
while($gps){
$buffer = fgets($gps);
if(substr($buffer, 0, 6)=='$GPRMC'){
echo $buffer."\n";

$gprmc = explode(',',$buffer);
$data['timestamp'] = strtotime('now');
$data['sat_status'] = $gprmc[2];

$data['lattitude_dms'] = $gprmc[3];
$data['lattitude_decimal'] = DMStoDEC($gprmc[3],'lattitude');
$data['lattitude_direction'] = $gprmc[4];

$data['longitude_dms'] = $gprmc[5];
$data['longitude_decimal'] = DMStoDEC($gprmc[5],'longitude');
$data['longitude_direction'] = $gprmc[6];

$data['speed_knots'] = $gprmc[7];

$data['bearing'] = $gprmc[8];

$data['google_map'] = '.','.$data['longitude_decimal'].'+(PHP']http://maps.google.com/maps?q='.$data['lattitude_decimal'].','.$data['longitude_decimal'].' (PHP Decoded)&iwloc=A';

print_r($data);
echo "\n\n";
}
}


?>
 
Последнее редактирование:
1. Научитесь нормально ставить вопрос, а еще излагать свои мысли правильно, а то Вас могут понять не только лишь все, мало кто может Вас понять;
2. Используйте знаки препинания;
3. Причем тут контрольная сумма и функция перевода широты и долготы, в числовую интерпретацию?
4. Из контрольной суммы вы никогда не получите широту, долготу и т.п.
 
1. Научитесь нормально ставить вопрос, а еще излагать свои мысли правильно, а то Вас могут понять не только лишь все, мало кто может Вас понять;
2. Используйте знаки препинания;
3. Причем тут контрольная сумма и функция перевода широты и долготы, в числовую интерпретацию?
4. Из контрольной суммы вы никогда не получите широту, долготу и т.п.

Хорошо. Объясню не спеша. Есть GPS модуль EB-500 который отправляет спутнику информацию передвижение и местонахождение транспорта. Мне нужно с помощью PHP обработать данные с GPS модуля о местонахождение объекта и передвижения. И отобразить в Googla Maps

0
 
Просто вот взять и переписать код под MySQL — это скорее на фриланс, раздел «Работа» и т.д.
 
И? В чем проблема?
1. RMC самое полезное сообщение, содержит всю самую необходимую информацию. Содержит данные о времени, местоположении, курсе и скорости. Контрольная сумма обязательна для этого сообщения, интервалы передачи не должны превышать 2 секунды.
$GPRMC,181057.000,A,5542.2389,N,03741.6063,E,0.47,74.50,190311,,,A*51
  • 181057.000 — время 18.10.57.
  • A — данные достоверны, V — недостоверны..
  • 5542.2389,N — широта («N» для северной или «S» для южной широты).
  • 03741.60637,E — долгота («E» для восточной или «W» для западной долготы).
  • 0.47 — скорость (узлов в час).
  • 74.50 — путевой угол (направление скорости) в градусах. Число с плавающей точкой. Целая и дробная части переменной длины. Значение равное 0 соответствует движению на север, 90 — восток, 180 — юг, 270 — запад.
  • 190311 — дата 19.03.2011.
  • — магнитное склонение в градусах, рассчитанное по некоторой модели, отсутствует.
  • — направление магнитного склонения, отсутствует.
  • A — режим: «A» — автономный, «D» — дифференциальный, «E» — аппроксимация, «N» — недостоверные данные.
  • *51 — контрольная сумма.

По русски и понятно: https://ru.wikipedia.org/wiki/NMEA_0183
 
Последнее редактирование:
Какие еще примеры? Вы же код привели. В нем есть все. Или градусы (минуты и секунды) перевести в градусы с десятичной дробью? (ну во первых в вашей копипасте есть уже функция), но все же это математика хз какой класс. Можно посмотреть здесь например. Конкретно, что вам не ясно?
 
Какие еще примеры? Вы же код привели. В нем есть все. Или градусы (минуты и секунды) перевести в градусы с десятичной дробью? (ну во первых в вашей копипасте есть уже функция), но все же это математика хз какой класс. Можно посмотреть здесь например. Конкретно, что вам не ясно?
Не запускается файл php (долго думает) с функцией которая открывает файл resource.txt и считывает строку с данными $GPRMC,084608.000,A,4640.9561,N,03235.3739,E,0.00,349.30,011214,,,D*67 . Решил попробывать прочесть данные с файла а потом переписать для Mysql а он не в какую
 
Потому что там ошибка. Цикл while у вас никогда не завершиться. Открываете ссылку http://php.net/fgets , и читаете. Там есть пример "построчное чтение файла".
 
Сверху