|
|
@ -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); |
|
|
|
} |
|
|
|