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";
}
}
?>
Возник вопрос насчет работы парсера.
Мне нужно получить данные с контрольной суммы широту и долготу и отобразить их в 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";
}
}
?>
Последнее редактирование: