Browse Source

为cmd上报添加success属性,微调getTxnRecord参数

feature/layout_0214
zhangjiming 6 months ago
parent
commit
4ad7daa960
  1. 99
      src/services/socket.ts
  2. 13
      src/services/txn.ts
  3. 8
      src/views/debug/debug.vue

99
src/services/socket.ts

@ -10,6 +10,7 @@ export type CmdDatagram = {
// commandName: DebugCmd;
status: CmdSuccess | CmdFailure;
message: string;
success: boolean;
};
};
@ -24,59 +25,59 @@ export type StatusDatagram = {
type: "status"; // 状态
data: {
emergencyStop: boolean; // 硬件急停信号,true 为急停触发,false 为正常运行
railArm: {
x: number;
y: number;
z: number;
joint1: number;
joint2: number;
joint3: number;
railDistance: number;
clawDistance: number;
speed: number;
isZeroPos: 0 | 1; // 导轨是否在原点,0 表示不在原点,非 0 表示在原点
isLimitPos: 0 | 1; // 导轨是否在限位点,0 表示不在限位点,非 0 表示在限位点
};
liquidArm: {
x: number;
y: number;
z: number;
joint1: number;
joint2: number;
speed: number;
};
railArm: {
x: number;
y: number;
z: number;
joint1: number;
joint2: number;
joint3: number;
railDistance: number;
clawDistance: number;
speed: number;
isZeroPos: 0 | 1; // 导轨是否在原点,0 表示不在原点,非 0 表示在原点
isLimitPos: 0 | 1; // 导轨是否在限位点,0 表示不在限位点,非 0 表示在限位点
};
liquidArm: {
x: number;
y: number;
z: number;
joint1: number;
joint2: number;
speed: number;
};
// 加液泵状态列表
motors: Array<{
pumpId: string;
speed: number;
position: number; // 电机实时位置
isZeroPos: 0 | 1; // 电机是否在原点,0 表示不在原点,非 0 表示在原点
isLimitPos: 0 | 1; // 电机是否在限位点,0 表示不在限位点,非 0 表示在限位点
}>;
heatingStatus: boolean;
motors: Array<{
pumpId: string;
speed: number;
position: number; // 电机实时位置
isZeroPos: 0 | 1; // 电机是否在原点,0 表示不在原点,非 0 表示在原点
isLimitPos: 0 | 1; // 电机是否在限位点,0 表示不在限位点,非 0 表示在限位点
}>;
heatingStatus: boolean;
// 加热器状态列表
heater: Array<{
heaterId: string;
temperature: number;
current: number;
}>;
trayStatus: boolean[]; // 加热位托盘状态列表,true 为存在托盘,false 为无托盘
capStatus: boolean[]; // 拍子状态列表,true 为存在拍子,false 为无拍子
heater: Array<{
heaterId: string;
temperature: number;
current: number;
}>;
trayStatus: boolean[]; // 加热位托盘状态列表,true 为存在托盘,false 为无托盘
capStatus: boolean[]; // 拍子状态列表,true 为存在拍子,false 为无拍子
// 酸液桶状态
lyeTank: {
isEmpty: boolean;
isFull: boolean;
};
lyeTank: {
isEmpty: boolean;
isFull: boolean;
};
// 废液桶状态
wasteTank: {
isEmpty: boolean;
isFull: boolean;
};
wasteTank: {
isEmpty: boolean;
isFull: boolean;
};
};
};
export type Datagram = CmdDatagram | WarnDatagram | StatusDatagram;
export type DatagramType = Datagram['type']
export type DatagramType = Datagram["type"];
export type SocketState = "open" | "close" | "error";
@ -130,9 +131,13 @@ class WebSocketClient {
// 接收消息的处理
this.ws.onmessage = (event: MessageEvent) => {
try {
const data = JSON.parse(event.data);
const data = JSON.parse(event.data) as Datagram;
// console.log('🚀 ~ WebSocketClient ~ bindEvents ~ data:', data)
this.dataSub.next(data);
if (data.type === "cmd") {
this.dataSub.next({ type: data.type, data: { ...data.data, success: data.data.status === "D0000" } });
} else {
this.dataSub.next(data);
}
} catch (error) {
console.error("消息解析错误:", error);
}

13
src/services/txn.ts

@ -32,11 +32,12 @@ export function addTxnRecord(val: TxnRecord) {
return txn
}
export function getTxnRecord(txn: string, del: boolean = true) {
export function getTxnRecord(txn: string, category: TxnRecord['category']) {
const record = txnCmdMap[txn];
console.log(txn,':', record)
if (del) {
delete txnCmdMap[txn];
}
return record;
// 只有属于指定category时,才返回,且返回后删除记录,节约内存
if (record.category === category) {
delete txnCmdMap[txn];
return record
}
return undefined
}

8
src/views/debug/debug.vue

@ -206,13 +206,13 @@ onMounted(() => {
const subscription = wsClient.dataOb.subscribe(data => {
console.log(data);
if (data.type === "cmd") {
const cmdInfo = getTxnRecord(data.data.commandId);
if (cmdInfo.category === "debug") {
const cmdInfo = getTxnRecord(data.data.commandId, "debug");
if (cmdInfo) {
const cmdName = CmdDescMap[cmdInfo.command];
const result = data.data.status === "D0000" ? "执行完毕" : "执行失败";
const result = data.data.success ? "执行完毕" : "执行失败";
ElMessage({
message: `${cmdName} ${result}`,
type: data.data.status === "D0000" ? "success" : "error",
type: data.data.success ? "success" : "error",
});
}
} else if (data.type === "status") {

Loading…
Cancel
Save