You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.7 KiB
68 lines
1.7 KiB
import {AmrMsg, AmrMsg10010, AmrMsg20050} from "@/core/manager/amr/AmrMessageDefine";
|
|
import Cl23dObject from "@/modules/cl2/Cl23dObject";
|
|
import Viewport from "@/core/engine/Viewport";
|
|
|
|
export default class AmrMessageManager {
|
|
|
|
public viewport: Viewport
|
|
|
|
handleMessage(topic, amrMsg: AmrMsg<any>) {
|
|
|
|
const vehicleId = parseInt(topic.replace("/wcs_server/", ""))
|
|
switch (amrMsg.id) {
|
|
// AMR作业指令 10010
|
|
case 10010:
|
|
const cl2 = this.viewport.entityManager.findObjectById(amrMsg.content.VehicleId + "") as Cl23dObject
|
|
cl2.handleMessage(amrMsg as AmrMsg<AmrMsg10010>)
|
|
break;
|
|
// 停止/解除 10040
|
|
case 10040:
|
|
break;
|
|
// 电文应答 10050
|
|
case 10050:
|
|
break;
|
|
// 配置信息 10060
|
|
case 10060:
|
|
break;
|
|
// 旋转货架 10080
|
|
case 10080:
|
|
break;
|
|
// 旋转车身 10081
|
|
case 10081:
|
|
break;
|
|
// 控制卷帘门 10082
|
|
case 10082:
|
|
break;
|
|
// 心跳 10100
|
|
case 10100:
|
|
break;
|
|
// 状态查询 10110
|
|
case 10110:
|
|
break;
|
|
// 取消已下发小车任务 10120
|
|
case 10120:
|
|
break;
|
|
// 设置小车坐标 10200
|
|
case 10200:
|
|
break;
|
|
// 等待就绪 19997
|
|
case 19997:
|
|
break;
|
|
}
|
|
if (amrMsg.id != 10050 && amrMsg.id != 10100) {
|
|
const seqNo = amrMsg.content.SeqNo;
|
|
this.sendAck(seqNo, vehicleId);
|
|
}
|
|
}
|
|
|
|
sendAck(seqNo: number, vehicleId: number) {
|
|
const msg20050 = new AmrMsg20050(seqNo, vehicleId)
|
|
const ack = new AmrMsg<AmrMsg20050>(msg20050)
|
|
this.sendMessage(ack)
|
|
}
|
|
|
|
sendMessage(amrMsg: AmrMsg<any>) {
|
|
this.viewport.envManager.client.publish('/agv_robot/status', JSON.stringify(amrMsg))
|
|
}
|
|
|
|
}
|
|
|