将响应数据发送到GT06 GPS设备的登录数据包,向服务器发送更多数据

时间:2017-10-31 05:39:08

标签: php sockets gps

我有一个GPS跟踪器设备。我已经在GPS设备上设置了TCP / IP和端口来接收GPS数据。我使用以下脚本接收GPS数据。我能够读取第一个登录数据包但作为回应我的服务器必须回复才能接收更多数据。我使用下面的php套接字脚本来读写数据,但是除了终端ID之外我无法接收。任何帮助都会被赞赏!在此先感谢。以下是脚本:

 <?php 

     $host    = "**.*.***.***";

     $port    = ****;

     $mysock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);


    socket_bind($mysock,$address, $port) or die('Could not bind to address');

    socket_listen($mysock, 5);

    $client = socket_accept($mysock); 

    $message = "7878050100002dc20d0a";

    // $message is the response data which i have to send from my server to 
    // gps device to receive further more detailed data.

   // $msg = hex2bin($message);

    $output = $msg;

    writeToFile('gprs.log', $output);

    $output = hex2bin(getCrc16($message));

    socket_write($client, $output);

    echo "Sent and Received data successfully";

    socket_close($client);

    socket_close($mysock);

    function getCrc16($pData){

    $crctab16 = array(0X0000, 0X1189, 0X2312, 0X329B, 0X4624, 0X57AD, 

    ...... 0X1EF1, 0X0F78,);

    $hexdata = pack('H*',$pData);

    $nLength = strlen($hexdata);

    $fcs = 0xFFFF;

    $pos = 0;

    while($nLength > 0){

    $fcs = ($fcs >> 8) ^ $crctab16[($fcs ^ ord($hexdata[$pos])) & 0xFF];

    $nLength--;

    $pos++;

    }

    return ~$fcs;

}

  function writeToFile($strFilename, $strText) { 

    if($fp = @fopen($strFilename,"w"))  { 

       $contents = fwrite($fp, $strText); 

       fclose($fp); 

       return true; 

      } else { 

      return false; 

   } 

 } 

?>

注意:我不想使用OpenGT,Window托管,任何其他第三方。

1 个答案:

答案 0 :(得分:0)

最后,我找到了在PHP中读取和保存gt06 gps设备数据的解决方案。感谢@06的@claytonmarinho脚本。以下是在php中寻找解决方案读取数据的其他人的脚本链接: https://github.com/vgartner/gps-tracker/blob/master/server/script_gt06.php