123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Mead
- * Date: 2019/9/3
- * Time: 8:05 PM
- */
- namespace App\Servers;
- use App\Maps\BoxActiveUpEventMap;
- use App\Maps\VideoMap;
- class BoxActiveReportingServer extends BaseServer
- {
- public function main($body)
- {
- $data = $this->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
- ];
- }
- }
|