diff --git a/src/views/mqtt/index.vue b/src/views/mqtt/index.vue index 0619c08..e699558 100644 --- a/src/views/mqtt/index.vue +++ b/src/views/mqtt/index.vue @@ -32,6 +32,7 @@ const publish = reactive({ count: 1, startTime: 0, startTimestamp: 0, + startSecMark: 0, lastTime: 0, lastTimestamp: 0, lastRawTimestamp: 0, @@ -43,6 +44,7 @@ const publish = reactive({ pause: false, rawTime: true, forceRawTime: false, + normalizedTime: false, range: { start: 0, end: 0 @@ -148,22 +150,39 @@ async function doPublish() { let list = item[0].content // 设置时间 publish.lastRawTimestamp = item[0].content[0].timeStamp + + if (publish.startTimestamp === 0) { + publish.startTimestamp = publish.lastRawTimestamp + publish.startSecMark = item[0].content[0].secMark + } + + if (!publish.rawTime || publish.normalizedTime) { + // 由于时间发生变化,对所有车辆进行复制,避免污染原始数据 + item = JSON.parse(JSON.stringify(item)) + list = item[0].content + } + + // 时间归一化,将所有车辆的时间对其索引 * 100 ms + if (publish.normalizedTime) { + for (const it of list) { + it.timeStamp = publish.startTimestamp + publish.index * 100 + it.secMark = (publish.startSecMark + publish.index * 100) % 60000 + } + } + // 处理暂停等操作对时间的影响 if (!publish.rawTime) { if (publish.timeTicking < 0) publish.timeOffset += 200 else if (publish.pause) publish.timeOffset += 100 const offset = publish.timeOffset publish.lastTimestamp = publish.lastRawTimestamp + publish.timeOffset - // 由于时间发生变化,对所有车辆的时间进行替换 - item = JSON.parse(JSON.stringify(item)) - list = item[0].content - for (const it of list) it.timeStamp = it.timeStamp + offset + for (const it of list) { + it.timeStamp = it.timeStamp + offset + it.secMark = (it.secMark + offset) % 60000 + } } else { publish.lastTimestamp = publish.lastRawTimestamp } - if (publish.startTimestamp === 0) { - publish.startTimestamp = publish.lastTimestamp - } publish.cars = list.map((it) => ({ name: it.global_track_id, x: it.x / 1.6, @@ -257,38 +276,49 @@ watch( - 连接 - 断开 - 发送 - - jobCancel?.()">停止 - - - 暂停 - 继续 - - - 原始时间模式:开 - - 原始时间模式:关 - - 倒带 - - 后退10秒 - 后退1秒 - 后退1帧 - 前进1帧 - 前进1秒 - 前进10秒 - + + + 连接 + 断开 + + 发送 + + + jobCancel?.()">停止 + + 暂停 + 继续 + + 原始时间模式:开 + + 原始时间模式:关 + + 时间归一化:开 + + 时间归一化:关 + + + 倒带 + + 后退10秒 + 后退1秒 + 后退1帧 + 前进1帧 + 前进1秒 + 前进10秒 + + - - 原始时间模式已关闭,这可能导致需要绝对时间的功能出现异常,例如红绿灯与车流可能不再同步 - - - 原始时间模式已开启,这可能导致修改进度时画面出现闪烁,暂停时画面不显示车辆的问题 + + + 原始时间模式已关闭,这可能导致需要绝对时间的功能出现异常,例如红绿灯与车流可能不再同步 + + 原始时间模式已开启,这可能导致修改进度时画面出现闪烁,暂停时画面不显示车辆的问题 + + 时间归一化已开启,可以修复原始数据可能存在的时间戳不一致问题,减少V2X系统内时间跳跃问题发生的概率。 + @@ -301,8 +331,9 @@ watch( {{ (publish.lastRawTimestamp - publish.startTimestamp) / 1000 }} 秒 - 正常 - 已禁用 + 已禁用 + 归一化 + 正常 {{ publish.startTimestamp }} @@ -416,7 +447,7 @@ watch( .config-form { .publish-controller-bar { - margin-left: 12px; + margin-top: 16px; &.disabled { > * { pointer-events: none;