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

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