列车信息调整
This commit is contained in:
parent
88230487d5
commit
6103863d70
@ -29,6 +29,19 @@
|
||||
}}</q-item-label>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<q-separator inset />
|
||||
<q-item v-for="(item, index) in list3" :key="index">
|
||||
<q-item-section>
|
||||
<q-item-label>{{ item.label }}</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side>
|
||||
<q-item-label caption>{{
|
||||
item.formatFn
|
||||
? item.formatFn(trainInfo.vobcState[item.key])
|
||||
: trainInfo.vobcState[item.key]
|
||||
}}</q-item-label>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-card>
|
||||
</template>
|
||||
@ -47,6 +60,11 @@ interface DynamicKeyType {
|
||||
key: keyof state.TrainDynamicState;
|
||||
formatFn?(v: state.TrainDynamicState[keyof state.TrainDynamicState]): string;
|
||||
}
|
||||
interface VobcStateType {
|
||||
label: string;
|
||||
key: keyof state.TrainVobcState;
|
||||
formatFn?(v: state.TrainVobcState[keyof state.TrainVobcState]): string;
|
||||
}
|
||||
const lineStore = useLineStore();
|
||||
const trainInfo = ref<ITrainState | null>();
|
||||
const dynamicInfo = ref<state.TrainDynamicState | null>();
|
||||
@ -92,6 +110,61 @@ const list2: DynamicKeyType[] = [
|
||||
{ label: '头车雷达速度值', key: 'headRadarSpeed', formatFn: speedFormat },
|
||||
{ label: '尾车雷达速度值', key: 'tailRadarSpeed', formatFn: speedFormat },
|
||||
];
|
||||
const list3: VobcStateType[] = [
|
||||
// 动力学信息
|
||||
{ label: '生命信号', key: 'lifeSignal' },
|
||||
{ label: 'TC1激活状态', key: 'tc1Active', formatFn: upFormat },
|
||||
{ label: 'TC2激活状态', key: 'tc2Active', formatFn: upFormat },
|
||||
{
|
||||
label: '列车方向向前',
|
||||
key: 'directionForward',
|
||||
formatFn: upFormat,
|
||||
},
|
||||
{
|
||||
label: '列车方向向后',
|
||||
key: 'directionBackward',
|
||||
formatFn: upFormat,
|
||||
},
|
||||
{
|
||||
label: '列车牵引状态',
|
||||
key: 'tractionStatus',
|
||||
formatFn: upFormat,
|
||||
},
|
||||
{
|
||||
label: '列车制动状态',
|
||||
key: 'brakingStatus',
|
||||
formatFn: upFormat,
|
||||
},
|
||||
{
|
||||
label: '列车紧急制动状态',
|
||||
key: 'emergencyBrakingStatus',
|
||||
formatFn: upFormat,
|
||||
},
|
||||
{
|
||||
label: '列车折返状态(AR)',
|
||||
key: 'turnbackStatus',
|
||||
formatFn: upFormat,
|
||||
},
|
||||
{ label: '跳跃状态', key: 'jumpStatus', formatFn: upFormat },
|
||||
{
|
||||
label: 'ATO模式',
|
||||
key: 'ato',
|
||||
formatFn: upFormat,
|
||||
},
|
||||
{ label: 'FAM模式', key: 'fam', formatFn: upFormat },
|
||||
{ label: 'CAM模式', key: 'cam', formatFn: upFormat },
|
||||
{ label: '牵引安全回路', key: 'tractionSafetyCircuit', formatFn: upFormat },
|
||||
{ label: '停放制动状态', key: 'parkingBrakeStatus', formatFn: upFormat },
|
||||
{ label: '保持制动状态', key: 'maintainBrakeStatus', formatFn: upFormat },
|
||||
{ label: '列车牵引力', key: 'tractionForce', formatFn: tractionForceFormat },
|
||||
{ label: '列车制动力', key: 'brakeForce', formatFn: tractionForceFormat },
|
||||
{ label: '列车载荷', key: 'trainLoad', formatFn: trainLoadFormat },
|
||||
{ label: '列车开左门指令', key: 'leftDoorOpenCommand', formatFn: upFormat },
|
||||
{ label: '列车开右门指令', key: 'rightDoorOpenCommand', formatFn: upFormat },
|
||||
{ label: '列车关左门指令', key: 'leftDoorCloseCommand', formatFn: upFormat },
|
||||
{ label: '列车关右门指令', key: 'rightDoorCloseCommand', formatFn: upFormat },
|
||||
{ label: '整列车门关好', key: 'allDoorClose', formatFn: upFormat },
|
||||
];
|
||||
function upFormat(v: boolean) {
|
||||
return v ? '是' : '否';
|
||||
}
|
||||
@ -113,10 +186,10 @@ function resistanceFormat(v: number) {
|
||||
}
|
||||
function speedFormat(v: number) {
|
||||
let n: string | number = '';
|
||||
if (v >= 0 && v < 500) {
|
||||
// if (v >= 0 && v < 500) {
|
||||
// 负数和大于500的是错误数字
|
||||
n = floatDecimal(v);
|
||||
}
|
||||
n = floatDecimal(v / 100);
|
||||
// }
|
||||
return `${n} km/h`;
|
||||
}
|
||||
function trainLengthFormat(v: number) {
|
||||
@ -129,6 +202,15 @@ function floatDecimal(v: number, x = 2) {
|
||||
return n;
|
||||
}
|
||||
|
||||
function tractionForceFormat(v: number) {
|
||||
const n = floatDecimal(v / 100);
|
||||
return `${n} KN`;
|
||||
}
|
||||
function trainLoadFormat(v: number) {
|
||||
const n = floatDecimal(v / 100);
|
||||
return `${n} ton`;
|
||||
}
|
||||
|
||||
watch(
|
||||
() => lineStore.selectedGraphics,
|
||||
(val) => {
|
||||
|
@ -173,11 +173,16 @@ export class TrainHead extends Container {
|
||||
arrow.beginFill(aColor, 1);
|
||||
arrow.drawPolygon(arrowPoint);
|
||||
arrow.endFill();
|
||||
// if (states.mode?.ipModeTrainStoped) {
|
||||
// this.arrow.visible = false;
|
||||
// } else {
|
||||
// this.arrow.visible = true;
|
||||
// }
|
||||
if (states.dynamicState.speed > 0) {
|
||||
this.arrow.visible = true;
|
||||
} else {
|
||||
this.arrow.visible = false;
|
||||
}
|
||||
if (states.vobcState.tc1Active || states.vobcState.tc2Active) {
|
||||
this.pause.visible = true;
|
||||
} else {
|
||||
this.pause.visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1287,19 +1287,19 @@ export namespace state {
|
||||
if (this.curveResistance != 0)
|
||||
writer.writeFloat(13, this.curveResistance);
|
||||
if (this.speed != 0)
|
||||
writer.writeFloat(14, this.speed);
|
||||
writer.writeInt32(14, this.speed);
|
||||
if (this.headSensorSpeed1 != 0)
|
||||
writer.writeFloat(15, this.headSensorSpeed1);
|
||||
writer.writeInt32(15, this.headSensorSpeed1);
|
||||
if (this.headSensorSpeed2 != 0)
|
||||
writer.writeFloat(16, this.headSensorSpeed2);
|
||||
writer.writeInt32(16, this.headSensorSpeed2);
|
||||
if (this.tailSensorSpeed1 != 0)
|
||||
writer.writeFloat(17, this.tailSensorSpeed1);
|
||||
writer.writeInt32(17, this.tailSensorSpeed1);
|
||||
if (this.tailSensorSpeed2 != 0)
|
||||
writer.writeFloat(18, this.tailSensorSpeed2);
|
||||
writer.writeInt32(18, this.tailSensorSpeed2);
|
||||
if (this.headRadarSpeed != 0)
|
||||
writer.writeFloat(19, this.headRadarSpeed);
|
||||
writer.writeInt32(19, this.headRadarSpeed);
|
||||
if (this.tailRadarSpeed != 0)
|
||||
writer.writeFloat(20, this.tailRadarSpeed);
|
||||
writer.writeInt32(20, this.tailRadarSpeed);
|
||||
if (!w)
|
||||
return writer.getResultBuffer();
|
||||
}
|
||||
@ -1349,25 +1349,25 @@ export namespace state {
|
||||
message.curveResistance = reader.readFloat();
|
||||
break;
|
||||
case 14:
|
||||
message.speed = reader.readFloat();
|
||||
message.speed = reader.readInt32();
|
||||
break;
|
||||
case 15:
|
||||
message.headSensorSpeed1 = reader.readFloat();
|
||||
message.headSensorSpeed1 = reader.readInt32();
|
||||
break;
|
||||
case 16:
|
||||
message.headSensorSpeed2 = reader.readFloat();
|
||||
message.headSensorSpeed2 = reader.readInt32();
|
||||
break;
|
||||
case 17:
|
||||
message.tailSensorSpeed1 = reader.readFloat();
|
||||
message.tailSensorSpeed1 = reader.readInt32();
|
||||
break;
|
||||
case 18:
|
||||
message.tailSensorSpeed2 = reader.readFloat();
|
||||
message.tailSensorSpeed2 = reader.readInt32();
|
||||
break;
|
||||
case 19:
|
||||
message.headRadarSpeed = reader.readFloat();
|
||||
message.headRadarSpeed = reader.readInt32();
|
||||
break;
|
||||
case 20:
|
||||
message.tailRadarSpeed = reader.readFloat();
|
||||
message.tailRadarSpeed = reader.readInt32();
|
||||
break;
|
||||
default: reader.skipField();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user