подскажите, как сэмулировать GPS трекер? Нужно на каком-то порту создать сокет и послать команду? Есть у кого пример? Хотелось бы забирая данные с livegps отправить данные на сервер starline (gatem15.starline.ru:12300) . Вроде тут где-то был http прокси, но мне кажется проще написать отдельную функцию (или процедуру) и в ручную или при необходимости ее вызывать.
Может есть какой вэб-сервис, который покажет полностью строку, которую отправляет трекер?
нашел сборище протоколов gps трекеров
http://wiki.track-me.org/%D0%BF%D1%80%D ... %BE%D0%B2/
upd: прописал в трекер свой домашний адрес, взвел php сокет. В итоге gps трекер starline m15 отдает какую-то непонятную последоватьность
AQQ0TFvVA или hex 41035151305446765641149826009753188065
Похоже на какое-то приветствие для установления общения с сервером.
Попробовал несколькими методами, действительно трекер отправляет этот код. Как его разобрать у меня мыслей нет. Отправляю этот же код на сервер старлайн или livegpstracks, результата никакого не наблюдаю.
Код: Выделить всё
function strToHex($string){
$hex='';
for ($i=0; $i < strlen($string); $i++){
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
function hexToStr($hex){
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2){
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
function hex2str($hex) {
$str = '';
for($i=0;$i<strlen($hex);$i+=2) $str .= chr(hexdec(substr($hex,$i,2)));
return $str;
}
//gatem15.starline.ru
//$host="185.129.96.11";
//$port=12300;
$host="5.9.136.109";
$port=3332;
$socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname("tcp")); // Create Socket
if (socket_connect($socket, $host, $port)) { //Connect
//circle 1
// $sendStr = 'ff 08 00 ff ff ff ff ff ff 4f 2d'; // 16 hexadecimal data
// $sendStr = '41 03 51 51 30 54 46 76 56 41 14 98 26 00 97 53 18 80 65';
//$sendStr = '41035151305446765641149826009753188065';
//в$sendStr = 'AQQ0TFvVA&';
$sendStr = 'AQQ0TFvVA&';
$sendStrArray = str_split(str_replace(' ', '', $sendStr), 2); // The 16 binary data into a set of two arrays
for ($j = 0; $j <count ($sendStrArray); $j++) {
socket_write ($socket, Chr (hexdec ($sendStrArray[$j]))); // by group data transmission
}
$receiveStr = "";
$receiveStr = socket_read($socket, 1024, PHP_BINARY_READ); // The 2 band data received
$receiveStrHex = bin2hex ($receiveStr); // the 2 hexadecimal data convert 16 hex
echo "send:".$sendStr ;
echo "<br>";
echo " answer:" . $receiveStr;
echo " answerSTR:" .hex2str($receiveStrHex);
echo " answerHEX:" . $receiveStrHex.'<br>';
}
socket_close($socket); // Close Socket
выложил на всякий случай сценарий отправки на сервера, может кто посмотрит и найдет косяк