# 停机引导对接协议 ## 版本信息 | 项目 | 内容 | | --- | --- | | 文档版本 | V1.1 | | 更新日期 | 2026-09-18 | | 适用范围 | UDP 组播状态包、HTTP 当前状态查询、本机记录库历史访问 | | 说明 | 在 1.0 基础上增加工作模式、系统激活、设备状态,以及选择机型与检测机型的区分。第 11 节补充 `guide_session`、`guide_detail`、`guide_event` 三表关系。 | * 状态 JSON 协议名称为 `ParkingSpaceGuideResult`,`version` 为 `1.1`。 ## 1. 协议概述 停机引导系统支持通过组播主动发送检测结果,也支持作为 HTTP 服务端,由现场系统按需查询当前停机状态。本协议(组播和 HTTP)只提供当前状态,没有历史查询地址。历史引导过程从本机记录库读取,字段与第 7 节相同。现场系统获取数据后,可解析当前停机位、目标编号、机型、到停止线距离、机身偏转角等信息。 访问方式: | 方式 | 地址 | 数据内容 | | --- | --- | --- | | UDP 组播 | 默认 `239.255.0.1:8800` | 当前 `ParkingSpaceGuideResult` | | HTTP GET | `http://<设备IP>:8801/api/parking/status` | 与组播相同的当前状态,不提供历史 | | 记录库 | 见第 11 节 | 历史引导过程,字段与第 7 节一致 | 协议特点: - 传输方式:组播,基于 UDP 数据报 - 查询方式:HTTP,停机引导系统作为服务端,现场系统作为客户端;仅当前状态 - 历史访问:本协议无历史 URL,使用第 11 节记录库连接信息 - 数据格式:JSON;历史记录字段与 JSON 协议相同 - 字符编码:UTF-8 - 组播数据方向:停机引导系统发送,现场系统接收 - HTTP 数据方向:现场系统请求,停机引导系统响应 - 组播应答机制:无应答 - HTTP 应答机制:请求-响应 - 组播重发机制:无重发 - 组播发送时机:每次检测结果更新时发送 1 包;`status`、轮挡时间或自检状态变化时也发送 1 包 ## 2. 组播网络参数 组播网络参数由停机引导系统配置。 | 参数 | 默认值 | 说明 | | --- | --- | --- | | enabled | true | 是否启用组播发送。 | | address | 239.255.0.1 | 组播地址。 | | port | 8800 | 组播端口。 | | targetId | T001 | 目标编号,由软件配置或现场系统约定。 | | parkId | P01 | 当前停机位编号,由软件配置。 | ## 3. HTTP 查询对接 HTTP 查询用于现场系统主动获取当前停机状态。停机引导系统作为 HTTP 服务端,返回最近一次状态;系统刚启动且尚未产生检测结果时,返回第 6 节示例中的状态包。 | 参数 | 默认值 | 说明 | | --- | --- | --- | | enabled | true | 是否启用 HTTP 状态服务。 | | address | 0.0.0.0 | HTTP 服务监听地址;`0.0.0.0` 表示监听本机所有网卡。 | | port | 8801 | HTTP 服务端口。 | | maxQueued | 16 | 等待处理的最⼤连接队列数。| | maxThreads | 4 | 最⼤处理线程数。| 请求方式: | 项目 | 内容 | | --- | --- | | URL | `http://<停机引导设备IP>:8801/api/parking/status` | | Method | `GET` | | Request Body | 无 | | Response Content-Type | `application/json; charset=utf-8` | 兼容路径: * / * /status * /api/status * /api/parking/status 响应数据: * HTTP 状态码 200 :返回当前停机状态 JSON,数据内容与 UDP 组播状态包⼀致,字段与第 4 ⾄第 7 节定义⼀致。 * HTTP 状态码 404 :请求路径不存在。 * HTTP 状态码 405 :请求⽅法不⽀持。 现场系统建议按 timestamp 判断数据是否更新,避免重复处理同⼀包状态。 现场系统建议按 `timestamp` 判断数据是否更新。 ## 4. JSON 数据格式 每包组播数据为一个 JSON 对象。实际发送时为紧凑 JSON,不包含格式化换行。 HTTP 查询返回的数据内容与 UDP 组播数据一致,字段、含义、类型、单位和取值规则相同,仅传输方式不同。 本软件每次只检测一个飞机停机位,结果字段放在顶层对象中,不包含结果数组。 接收端应允许 JSON 增加字段。组播不保证到达和顺序,应以最新 `timestamp` 为准。`timestamp` 为 Unix 毫秒整数;其余时间字段为设备本地 `yyyy-MM-dd HH:mm:ss` 字符串,未记录时为空字符串。检测内部信息不对外发送。距离、偏转角、横向偏移、速度为浮点数;状态序号和错误码为整数。 ## 5. 成功数据示例 ```json { "protocol": "ParkingSpaceGuideResult", "version": "1.1", "success": true, "hasResult": true, "targetId": "T001", "parkId": "P01", "expectedModelType": "A320", "modelType": "A320", "modelMatched": true, "guideStateCode": 21, "distanceToStop": 50.0, "bodyYawAngle": 0.0, "lateralOffset": 0.0, "aircraftSpeed": 0.4, "hasException": false, "guideText": "CHOCK ON", "personChockTime": "2026-09-07 14:40:00", "chockOnTime": "2026-09-07 14:40:05", "chockOffTime": "", "status": { "workMode": "normal", "activated": true, "camera": { "name": "平面相机", "connected": true }, "lidar": { "name": "雷达", "connected": true }, "emergencyStop": { "name": "急停", "enabled": true, "available": true, "active": false, "latched": false } }, "selfCheck": { "running": false, "ok": true, "lidarOk": true, "cameraOk": true, "storageOk": true, "networkOk": true, "errorCode": 0, "message": "自检通过:雷达、相机、存储、网络正常" }, "message": "轮挡区域人员检测已确认,轮挡固定流程完成", "errorCode": 0, "timestamp": 1783339200000 } ``` 选择名称包含 `A320` 或 `B737` 的配置机型时,按检测家族匹配: ```json "expectedModelType": "A320-200 NEO", "modelType": "A320", "modelMatched": true ``` 选择非 A320/B737 家族的配置机型时,`expectedModelType` 为配置中的机型名称,`modelType` 仍为检测结果(`A320`、`B737` 或 `其他`),`modelMatched` 为 `false`: ```json "expectedModelType": "C919", "modelType": "其他", "modelMatched": false ``` ## 6. 失败或无结果数据示例 检测失败、无有效目标或尚未开始引导时,仍发送状态包。`success=false`,`hasResult=false`。空闲包仍携带 `status`。 ```json { "protocol": "ParkingSpaceGuideResult", "version": "1.1", "success": false, "hasResult": false, "targetId": "T001", "parkId": "P01", "expectedModelType": "", "modelType": "未知", "modelMatched": false, "guideStateCode": 0, "distanceToStop": 0.0, "bodyYawAngle": 0.0, "lateralOffset": 0.0, "aircraftSpeed": 0.0, "hasException": true, "guideText": "", "personChockTime": "", "chockOnTime": "", "chockOffTime": "", "status": { "workMode": "normal", "activated": false, "camera": { "name": "平面相机", "connected": true }, "lidar": { "name": "雷达", "connected": false }, "emergencyStop": { "name": "急停", "enabled": true, "available": true, "active": false, "latched": false } }, "selfCheck": { "running": false, "ok": false, "lidarOk": false, "cameraOk": true, "storageOk": true, "networkOk": true, "errorCode": 0, "message": "" }, "message": "无有效结果", "errorCode": -1, "timestamp": 1783339200000 } ``` ## 7. 字段定义 类型均为 JSON 取值类型。`int` 为整数,`float` 为浮点数,`bool` 为布尔,`string` 为字符串,`object` 为对象。历史记录字段与下表相同,不再另列。 | 字段 | 类型 | 单位 | 说明 | | --- | --- | --- | --- | | protocol | string | - | 固定为 `ParkingSpaceGuideResult`。 | | version | string | - | 协议版本,当前为 `1.1`。 | | success | bool | - | 本包含有效结果且 `errorCode=0` 时为 `true`。 | | hasResult | bool | - | 本包是否包含有效引导结果。 | | targetId | string | - | 目标编号,默认 `T001`。 | | parkId | string | - | 当前停机位编号,默认 `P01`。 | | expectedModelType | string | - | 操作员选择的机型。未选择时为空。取值来自当前配置的可选机型,不是协议写死的清单。名称包含 `A320` 或 `B737` 时按家族校验;其余名称以现场配置为准。 | | modelType | string | - | 相机检测机型。仅 `A320`、`B737`、`其他`;未检出为 `未知`。 | | modelMatched | bool | - | 选择名称包含 `A320` 且 `modelType` 为 `A320`,或包含 `B737` 且 `modelType` 为 `B737` 时为 `true`。选择其他机型或不选时为 `false`。 | | personChockTime | string | 日期时间 | 人员轮挡确认时间,设备本地时间,格式 `yyyy-MM-dd HH:mm:ss`;未确认时为空。 | | chockOnTime | string | 日期时间 | 人工上轮挡时间,设备本地时间,格式 `yyyy-MM-dd HH:mm:ss`;未记录时为空。 | | chockOffTime | string | 日期时间 | 人工下轮挡时间,设备本地时间,格式 `yyyy-MM-dd HH:mm:ss`;未记录时为空。 | | status | object | - | 状态:工作模式、是否激活、相机/雷达/急停,见下表。 | | selfCheck | object | - | 开始前自检结果,见下表。 | | guideStateCode | int | - | 引导状态序号,见第 8 节;无状态为 `0`。 | | distanceToStop | float | 毫米 | 到停止线距离。 | | bodyYawAngle | float | 度 | 机身偏转角。 | | lateralOffset | float | 毫米 | 相对引导中心线的横向偏移。 | | aircraftSpeed | float | 米/秒 | 飞机接近速度。 | | hasException | bool | - | `errorCode != 0`,或 `guideStateCode` 为 10~20、22~24 时为 `true`。 | | guideText | string | - | 引导显示文本。 | | message | string | - | 说明或异常原因。 | | errorCode | int | - | `0` 正常。设备异常码见第 10 节;`-1` 表示无有效结果。 | | timestamp | int | 毫秒 | 本包生成时刻,Unix 毫秒时间戳。除本字段外,其余时间均使用 `yyyy-MM-dd HH:mm:ss`。 | `expectedModelType` 是页面选择的机型,`modelType` 是检测结果,二者不要混用。可选机型由配置维护。检测只区分 `A320`、`B737`、`其他`。选择名称包含 `A320` 且检测为 `A320` 算匹配,包含 `B737` 且检测为 `B737` 同样算匹配,例如选择 `A320-200 NEO` 检测 `A320`。仅这两类家族做校验,不一致可进入状态 15;选择 A321、C919 等其他配置机型不校验。检测置信度、是否支持精确校验、轮挡区域内人员及人数等内部信息不对外发送。 `status` 与 `selfCheck` 含义不同:`status` 是当前工作模式、激活情况和设备在线状态,`selfCheck` 是本次开始前的自检结果。工作模式和是否激活只放在 `status` 中,不再出现在顶层。 | status 字段 | 类型 | 说明 | | --- | --- | --- | | workMode | string | `normal` 正常模式;`maintenance` 维护模式。缺省按 `normal`。维护模式引导流程与正常模式相同。 | | activated | bool | `true`:已开始且自检通过,正在引导。`false`:未开始、自检中或已停止。缺省按 `false`。 | | camera.name | string | `平面相机` | | camera.connected | bool | 平面相机是否在线 | | lidar.name | string | `雷达` | | lidar.connected | bool | 雷达是否在线 | | emergencyStop.name | string | `急停` | | emergencyStop.enabled | bool | 是否启用急停 | | emergencyStop.available | bool | 急停输入是否可用 | | emergencyStop.active | bool | 急停是否正在触发 | | emergencyStop.latched | bool | 急停是否已锁存 | | selfCheck 字段 | 类型 | 说明 | | --- | --- | --- | | running | bool | 是否正在自检 | | ok | bool | 是否全部通过 | | lidarOk | bool | 雷达 | | cameraOk | bool | 平面相机 | | storageOk | bool | 存储 | | networkOk | bool | 网络 | | errorCode | int | 见第 10 节。自检失败时与顶层 `errorCode` 相同。 | | message | string | 说明 | 自检失败时 `guideStateCode=22`,`status.activated=false`。 人员轮挡时间与人工上/下轮挡时间相互独立。 ## 8. 引导状态枚举 `guideStateCode` 为 `10` 至 `20` 或 `22` 至 `24` 时按异常处理,`hasException=true`。状态 `21` 为正常完成。状态 `8` 为停稳,保持约 5 秒后进入状态 `9`。 | 序号 | 流程/功能 | 显示文本 | 说明 | | --- | --- | --- | --- | | 1 | 泊位引导启动 | START | 已开始,距离不大于 100 m | | 2 | 捕获 | CAPTURE | 距离大于 25 m 且不大于 80 m | | 3 | 跟踪 | | 内部跟踪 | | 4 | 接近率 | | 内部接近率 | | 5 | 对准中心线 | 距离 | 距离不大于 25 m,横向和航向在容差内 | | 6 | 慢速 | SLOW | 距离不大于 15 m,速度不小于 2 m/s | | 7 | 方位引导 | 距离 | 距离不大于 25 m,横向或航向超差 | | 8 | 到达停止位置 | STOP | 到停止线距离在 ±0.1 m 内 | | 9 | 泊位引导完成 | OK | 停稳并保持约 5 秒 | | 10 | 越位 | TOO FAR | 越过停止线不小于 0.5 m | | 11 | 提前停止 | | 提前停止 | | 12 | 等待 | | 未进入 100 m 范围或空闲 | | 13 | 异常慢速-恶劣天气 | | 恶劣天气 | | 14 | 飞机丢失 | | 引导中连续丢失 | | 15 | 飞机验证失败 | ID FAIL | 选择名称包含 A320/B737 且与检测家族不一致 | | 16 | 机位受阻 | GATE BLOCK | 机位受阻 | | 17 | 视野受阻 | VIEW BLOCK | 视野受阻 | | 18 | SBU停止 | | 安全备份停止 | | 19 | 速度过快 | | 速度过快 | | 20 | 紧急停止 | STOP | 急停有效 | | 21 | 挡轮挡 | CHOCK ON | 人员轮挡已确认 | | 22 | 系统错误 | ERROR | 自检或系统错误 | | 23 | 系统故障 | | 系统故障 | | 24 | 电源故障 | | 电源故障 | ## 9. 对接说明 现场系统建议优先解析: - `targetId`、`parkId` - `expectedModelType`、`modelType`、`modelMatched` - `guideStateCode`、`guideText` - `distanceToStop`、`bodyYawAngle`、`lateralOffset`、`aircraftSpeed` - `personChockTime`、`chockOnTime`、`chockOffTime` - `status.workMode`、`status.activated` - `hasException`、`errorCode`、`timestamp` 设备异常时优先看 `errorCode`(`2200`~`2205`)和 `status` 中对应设备的在线状态。 状态判断: - `success=true` 且 `hasResult=true`:本包含有效引导结果。 - `success=false`:异常、无目标或无有效结果。 - `status.activated=true`:系统已激活。 - `status.workMode=maintenance`:维护模式。 - `guideStateCode=8`:停稳(STOP);随后为 `9`(OK)。 注意事项: - 组播不保证到达和顺序,以最新 `timestamp` 为准。 - 接收端应允许 JSON 增加字段。 - 数值单位以本协议为准。 - `selfCheck` 不能代替 `status`。 - 轮挡时间未记录时为空字符串,不要按 `0` 解析。 - 设备异常码见第 10 节;`-1` 不是设备故障,表示当前无有效引导结果。 - 组播和 HTTP 没有历史查询地址。历史见第 11 节记录库。 ## 10. 错误码 顶层 `errorCode` 与 `selfCheck.errorCode` 使用同一套取值。`0` 为正常。设备异常使用 `2200`~`2205`。 | errorCode | 含义 | 说明 | | ---: | --- | --- | | 0 | 正常 | 本包无设备或系统错误。 | | -1 | 无有效结果 | 未开始、空闲或尚无检测结果。不是设备故障。 | | 2200 | 多项设备异常 | 雷达、相机、存储、网络中两项及以上异常。 | | 2201 | 雷达异常 | 雷达离线、未运行或自检失败。 | | 2202 | 平面相机异常 | 平面相机离线、未打开或自检失败。 | | 2203 | 存储异常 | 本机存储不可写。 | | 2204 | 网络异常 | 无可用 IPv4 网卡。 | | 2205 | 急停输入异常 | 急停已启用但输入不可用。 | 判断方式: - `errorCode=0`:无设备错误。引导是否异常看 `hasException` 和 `guideStateCode`(如 15 ID FAIL、20 急停按下)。 - `errorCode=-1`:无有效结果,通常 `success=false`、`hasResult=false`。 - `errorCode` 为 `2200`~`2204`:自检或运行中设备异常,`guideStateCode` 一般为 `22`,`status.activated=false`。 - `errorCode=2205`:急停输入异常,`guideStateCode` 一般为 `23`。 - 急停按钮按下是引导状态 `20`,不是本表设备错误码。 - 其他非 `0` 值按一般异常处理,结合 `message` 和 `guideStateCode`。 - `status.camera.connected`、`status.lidar.connected` 是实时在线状态,不能用 `selfCheck` 代替。 雷达异常示例: ```json "success": false, "hasResult": false, "guideStateCode": 22, "guideText": "ERROR", "hasException": true, "errorCode": 2201, "message": "雷达异常", "status": { "workMode": "normal", "activated": false, "camera": { "name": "平面相机", "connected": true }, "lidar": { "name": "雷达", "connected": false } } ``` ## 11. 历史记录访问 组播和 HTTP **不支持**历史查询,没有历史 URL。当前状态地址见第 2、3 节。 历史引导过程从本机记录库读取。库内三张表:`guide_session`(一次引导会话)、`guide_detail`(过程采样)、`guide_event`(操作事件)。明细字段与第 7 节 `ParkingSpaceGuideResult` 对应;`status`、`selfCheck` 拆成 `status_`、`selfCheck_` 前缀列,读出后再拼回对象。另有会话起止时间 `startTime`、`endTime`,格式与轮挡时间相同(`yyyy-MM-dd HH:mm:ss`,进行中的结束时间为空)。`sessionUuid` 只作库内关联和回放查询,不是第 7 节结果包字段。 连接信息: | 参数 | 默认值 | 说明 | | --- | --- | --- | | 协议 | MariaDB | 使用 MariaDB / MySQL 兼容客户端连接。 | | 地址 | 停机引导设备 IP | 与 HTTP 查询使用同一台设备。 | | 端口 | 3306 | 记录库端口。 | | 库名 | parking_guide | 默认库。 | | 用户 | parking | 默认账号。 | | 密码 | parking | 默认密码,现场可改。 | 默认保留最近 30 天。库不可用时引导、组播和 HTTP 仍可用,仅不写历史。远程控制端也可用 `list_sessions` / `get_session_samples` 读会话和明细,见《停机引导远程控制协议》。 ### 11.1 三表关系 关联键一律是 `sessionUuid`(`VARCHAR(64)`)。`guide_session.sessionUuid` 唯一。一次点击开始到停止(或急停、自检失败结束)对应 **一条** `guide_session`。 ``` guide_session 1 ── sessionUuid ──< N guide_detail (过程采样,必有所属会话) guide_session 1 ── sessionUuid ──< 0..N guide_event (操作事件;开机自检等无会话时为空) ``` | 子表 | 关联字段 | 父表 | 基数 | 外键删除 | | --- | --- | --- | --- | --- | | `guide_detail` | `sessionUuid` NOT NULL | `guide_session.sessionUuid` | 1 对多 | `ON DELETE CASCADE` | | `guide_event` | `sessionUuid` 可空 | `guide_session.sessionUuid` | 1 对 0..多 | `ON DELETE CASCADE`;`NULL` 行不随会话删除 | 约束要点: - 明细必须先有会话。开始引导写入 `guide_session` 后,才向 `guide_detail`、`guide_event` 写该次 `sessionUuid`。 - 事件允许无会话:`sessionUuid` 为空(库内 `NULL`),例如开机自检 `boot_self_check`。这类行没有父会话,删除过期会话时不会被级联清掉。 - 删除一条 `guide_session` 时,该 `sessionUuid` 下的明细和有会话事件一并删除。过期清理先按 `guide_session.startTime` 删会话(级联子表),再按时间删除 `sessionUuid IS NULL` 的事件。 - 三张表各自另有自增主键 `id`,仅库内使用,对外关联只用 `sessionUuid`。 - 点云和图像不入库。回放只能还原当时的状态 JSON,不能还原原始传感器数据。 写入时机: | 时机 | `guide_session` | `guide_detail` | `guide_event` | | --- | --- | --- | --- | | 开机自检 | 不写 | 不写 | `sessionUuid` 为空,`boot_self_check` | | 点击开始,快检失败 | 不写 | 不写 | 无会话或当前会话的 `self_check` | | 引导会话开始 | `INSERT` 一条,`endTime` 为空 | 随后按规则采样 | `session_begin` | | 引导过程中 | 轮挡时间变化时 `UPDATE` | `guideStateCode` 变化立即写一条;其余按 `sampleIntervalMs`(默认 200 ms)采样 | `person_chock` / `chock_on` / `chock_off` / `maintenance` / `self_check` | | 停止、急停或流程结束 | `UPDATE` 结束状态、检测机型、`endTime` | 可再写最后一条 | `session_end` | 还原一次引导:用 `sessionUuid` 读 `guide_session` 得到起止摘要;按 `timestamp` 升序读 `guide_detail`,把拆列拼回第 7 节对象;需要操作轨迹时再按同一 `sessionUuid` 读 `guide_event`。明细里的 `sessionUuid` 还原时不要放进结果包。 查询示例: ```sql -- 最近会话 SELECT `sessionUuid`, `parkId`, `targetId`, `expectedModelType`, `modelType`, `startTime`, `endTime`, `guideStateCode`, `hasException`, `errorCode` FROM guide_session ORDER BY `startTime` DESC LIMIT 50; -- 某次引导过程(拼回 ParkingSpaceGuideResult,不含 sessionUuid) SELECT * FROM guide_detail WHERE `sessionUuid` = '' ORDER BY `timestamp` ASC; -- 某次引导的操作事件 SELECT `timestamp`, `eventType`, `message`, `payload` FROM guide_event WHERE `sessionUuid` = '' ORDER BY `timestamp` ASC; -- 无会话事件(如开机自检) SELECT `timestamp`, `eventType`, `message`, `payload` FROM guide_event WHERE `sessionUuid` IS NULL ORDER BY `timestamp` ASC; ``` 时间字段:`guide_session` 的 `startTime`、`endTime` 和三张表中的轮挡时间为设备本地 `DATETIME`(`yyyy-MM-dd HH:mm:ss`);`guide_detail.timestamp`、`guide_event.timestamp` 为 Unix 毫秒整数,与第 7 节 `timestamp` 相同。布尔列存 `TINYINT`:`1` 为真,`0` 为假。 ### 11.2 `guide_session` 引导会话 一次点击开始到停止(或急停/自检失败结束)对应一条。结束时回写检测机型、最终状态和错误信息。 | 字段 | 说明 | | --- | --- | | sessionUuid | 会话标识,仅库内/回放使用 | | parkId | 停机位 | | targetId | 目标编号 | | expectedModelType | 操作员选择机型 | | modelType | 检测机型,会话结束时回写 | | modelMatched | 选择机型与检测机型是否匹配 | | startTime | 开始时间 | | endTime | 结束时间;进行中为空 | | guideStateCode | 结束时的引导状态序号 | | hasException | 结束时是否异常 | | errorCode | 结束时错误码,与第 10 节相同 | | message | 结束时说明 | | personChockTime | 人员轮挡确认时间 | | chockOnTime | 人工上轮挡时间 | | chockOffTime | 人工下轮挡时间 | ### 11.3 `guide_detail` 引导明细 一次会话的过程数据。除 `sessionUuid` 外,列与第 7 节一一对应。 | 字段 | 说明 | | --- | --- | | sessionUuid | 所属会话,对应 `guide_session.sessionUuid`,还原时不放入结果包 | | protocol | 固定 `ParkingSpaceGuideResult` | | version | 协议版本,当前 `1.1` | | success | 本条是否有效结果且 errorCode=0 | | hasResult | 本条是否包含有效引导结果 | | targetId | 目标编号 | | parkId | 停机位 | | expectedModelType | 操作员选择机型 | | modelType | 检测机型 | | modelMatched | 选择机型与检测机型是否匹配 | | personChockTime | 人员轮挡确认时间 | | chockOnTime | 人工上轮挡时间 | | chockOffTime | 人工下轮挡时间 | | status_workMode | 工作模式 | | status_activated | 是否已激活 | | status_camera_name | 平面相机名称 | | status_camera_connected | 平面相机是否在线 | | status_lidar_name | 雷达名称 | | status_lidar_connected | 雷达是否在线 | | status_emergencyStop_name | 急停名称 | | status_emergencyStop_enabled | 是否启用急停 | | status_emergencyStop_available | 急停输入是否可用 | | status_emergencyStop_active | 急停是否正在触发 | | status_emergencyStop_latched | 急停是否已锁存 | | selfCheck_running | 是否正在自检 | | selfCheck_ok | 自检是否通过 | | selfCheck_lidarOk | 雷达自检 | | selfCheck_cameraOk | 相机自检 | | selfCheck_storageOk | 存储自检 | | selfCheck_networkOk | 网络自检 | | selfCheck_errorCode | 自检错误码 | | selfCheck_message | 自检说明 | | guideStateCode | 引导状态序号 | | distanceToStop | 到停止线距离,毫米 | | bodyYawAngle | 机身偏转角,度 | | lateralOffset | 横向偏移,毫米 | | aircraftSpeed | 接近速度,米/秒 | | hasException | 本条是否异常 | | guideText | 引导文字 | | message | 说明或异常原因 | | errorCode | 错误码,与第 10 节相同 | | timestamp | 本条时间,Unix 毫秒 | ### 11.4 `guide_event` 操作事件 操作员动作和关键系统事件。有会话时 `sessionUuid` 与 `guide_session.sessionUuid` 相同;无会话时为空。 | 字段 | 说明 | | --- | --- | | sessionUuid | 所属会话;无会话时为空 | | timestamp | 事件时间,Unix 毫秒 | | eventType | 事件类型,见下表 | | message | 说明文字 | | payload | 附加 JSON 文本;自检事件为 `selfCheck` 对象,其余通常为空 | | eventType | 写入时机 | sessionUuid | payload | | --- | --- | --- | --- | | boot_self_check | 应用初始化完成时的开机自检 | 空 | 自检结果 | | self_check | 点击开始后的启动自检 | 有会话则为该次,否则为空 | 自检结果 | | session_begin | 自检通过,引导会话开始 | 有 | 空 | | session_end | 停止、急停或流程结束 | 有 | 空 | | person_chock | 轮挡区域人员首次确认 | 有 | 空 | | chock_on | 人工上轮挡 | 有 | 空 | | chock_off | 人工下轮挡 | 有 | 空 | | maintenance | 进入或退出维护模式 | 有则带会话,否则为空 | 空 |