decode($body); self::log($data, 'BoxActiveReportingServer', self::$LOG_MAJOR); $bike_no = $_SESSION['bike_no']; $box_no = $data['box_no']; $video_cmd = VideoMap::VIDEO_FIND_BIKE; switch ($data['event']) { case BoxActiveUpEventMap::EVENT_STOP_MOTION: // 结束订单 $status = json_decode(file_get_contents(Config['close_order_api_url'] . "&box_no={$box_no}&bike_no={$bike_no}&type=静止30分钟"), true); self::log($box_no, 'BoxActiveReporting_SYSTEM_AUTO_ORDER', self::$LOG_COMMON); $video_cmd = VideoMap::VIDEO_CLOSE_BIKE; break; } return $this->response(self::RESPONSE_SUCCESS, $video_cmd); } const RESPONSE_SUCCESS = '00'; const RESPONSE_FAI = '01'; protected function response($response_status = self::RESPONSE_SUCCESS, $video_cmd = false) { $body = [ $response_status, '00' . $video_cmd ]; $body = str_split(implode('', $body), 2); return $body; } /** * 解析装载的数据 * @param $body * @return array * User: Mead */ private function decode($body) { $i = 0; $box_no = self::stitching($body, $i, 5); $i += 5; // 设备时间 $time = self::stitching($body, $i, 4); $i += 4; //主动上报事件类型 $event = self::stitching($body, $i, 1); $i += 1; /** * GPS 信息 */ //维度 $i += 4; //经度 $i += 4; //海拔高度 $i += 2; //方位角 $i += 1; //GPS速度 $i += 1; //信号状态 $i += 2; /** * 基站信息 */ // MCC $i += 2; // MNC $i += 2; // LAC $i += 2; // CELLID $i += 2; /** * 车辆信息 */ // 相对SOG $i += 1; // 可用剩余容量 $i += 2; // 电瓶电压 $i += 2; // 总里程 $i += 4; // 单次里程数 $i += 4; // 车辆状态 $i += 2; // 处理值 $box_no = $this->decodeBoxNo($box_no); $time = $this->decodeTime($time); return [ 'box_no' => $box_no, 'time' => $time, 'event' => $event ]; } }