|
|
@ -1,20 +1,26 @@ |
|
|
package com.galaxis.rcs.communication.amrCommunication; |
|
|
package com.galaxis.rcs.communication.amrCommunication; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException; |
|
|
import com.fasterxml.jackson.core.type.TypeReference; |
|
|
import com.fasterxml.jackson.core.type.TypeReference; |
|
|
import com.galaxis.rcs.communication.JacksonGenericUtils; |
|
|
import com.galaxis.rcs.communication.JacksonUtils; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.*; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.*; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskCompletedData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskCompletedData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskModeChangeData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskModeChangeData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskStatusChangeData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskStatusChangeData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskTypeChangeData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskTypeChangeData; |
|
|
|
|
|
import com.galaxis.rcs.connector.cl2.sendEntity.AmrTaskMessage; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.clever.core.AppContextHolder; |
|
|
import org.clever.core.AppContextHolder; |
|
|
import org.clever.core.json.JsonWrapper; |
|
|
import org.clever.core.json.JsonWrapper; |
|
|
import org.clever.data.redis.Redis; |
|
|
import org.clever.data.redis.Redis; |
|
|
|
|
|
import org.eclipse.paho.mqttv5.client.MqttClient; |
|
|
|
|
|
import org.eclipse.paho.mqttv5.common.MqttException; |
|
|
import org.eclipse.paho.mqttv5.common.MqttMessage; |
|
|
import org.eclipse.paho.mqttv5.common.MqttMessage; |
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
|
|
import java.nio.charset.Charset; |
|
|
import java.nio.charset.StandardCharsets; |
|
|
import java.nio.charset.StandardCharsets; |
|
|
import java.util.concurrent.ConcurrentHashMap; |
|
|
import java.util.concurrent.ConcurrentHashMap; |
|
|
|
|
|
|
|
|
@ -73,7 +79,7 @@ public class AmrMessageHandler { |
|
|
AmrMessage<?> amrMessage = null; |
|
|
AmrMessage<?> amrMessage = null; |
|
|
switch (id) { |
|
|
switch (id) { |
|
|
case 20010: |
|
|
case 20010: |
|
|
AmrMessage<AmrTaskCompletedMessage> taskCompletedMessage = JacksonGenericUtils.parse(json, typeRef20010Message); |
|
|
AmrMessage<AmrTaskCompletedMessage> taskCompletedMessage = JacksonUtils.parse(json, typeRef20010Message); |
|
|
break; |
|
|
break; |
|
|
case 20011: { |
|
|
case 20011: { |
|
|
int EventId = jw.asInt("content", "EventId"); |
|
|
int EventId = jw.asInt("content", "EventId"); |
|
|
@ -84,35 +90,47 @@ public class AmrMessageHandler { |
|
|
case 5: |
|
|
case 5: |
|
|
case 6: |
|
|
case 6: |
|
|
case 7: |
|
|
case 7: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20011_defaultMessage); |
|
|
AmrMessage<AmrTaskStatusMessage<TaskStatusChangeData>> taskStatusChangeDefault = JacksonUtils.parse(json, typeRef20011_defaultMessage); |
|
|
|
|
|
|
|
|
break; |
|
|
break; |
|
|
case 1: |
|
|
case 1: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20011_1Message); |
|
|
AmrMessage<AmrTaskStatusMessage<TaskModeChangeData>> taskModeChange = JacksonUtils.parse(json, typeRef20011_1Message); |
|
|
break; |
|
|
break; |
|
|
case 4: |
|
|
case 4: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20011_4Message); |
|
|
AmrMessage<AmrTaskStatusMessage<TaskCompletedData>> taskCompleted = JacksonUtils.parse(json, typeRef20011_4Message); |
|
|
|
|
|
agvStatusAndInfo.logicX = taskCompleted.content.Info.CurLogicX; |
|
|
|
|
|
agvStatusAndInfo.logicY = taskCompleted.content.Info.CurLogicY; |
|
|
|
|
|
// agvStatusAndInfo.orientation = landmarkMessage.content.CurOrientation;
|
|
|
|
|
|
agvStatusAndInfo.direction = taskCompleted.content.Info.CurDirection; |
|
|
|
|
|
log.info("1-Received message: " + json); |
|
|
break; |
|
|
break; |
|
|
case 8: |
|
|
case 8: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20011_8Message); |
|
|
AmrMessage<AmrTaskStatusMessage<TaskTypeChangeData>> taskTypeChange = JacksonUtils.parse(json, typeRef20011_8Message); |
|
|
default: |
|
|
default: |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
case 20012: |
|
|
case 20012: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20012Message); |
|
|
amrMessage = JacksonUtils.parse(json, typeRef20012Message); |
|
|
break; |
|
|
break; |
|
|
case 20020: |
|
|
case 20020: |
|
|
AmrMessage<AmrLandmarkMessage> landmarkMessage = JacksonGenericUtils.parse(json, typeRef20020Message); |
|
|
AmrMessage<AmrLandmarkMessage> landmarkMessage = JacksonUtils.parse(json, typeRef20020Message); |
|
|
|
|
|
agvStatusAndInfo.x = landmarkMessage.content.X; |
|
|
|
|
|
agvStatusAndInfo.y = landmarkMessage.content.Y; |
|
|
|
|
|
agvStatusAndInfo.logicX = landmarkMessage.content.CurLogicX; |
|
|
|
|
|
agvStatusAndInfo.logicY = landmarkMessage.content.CurLogicY; |
|
|
|
|
|
// agvStatusAndInfo.orientation = landmarkMessage.content.CurOrientation;
|
|
|
|
|
|
agvStatusAndInfo.direction = landmarkMessage.content.CurDirection; |
|
|
// if (landmarkMessage.content.VehicleId == 32) {
|
|
|
// if (landmarkMessage.content.VehicleId == 32) {
|
|
|
log.info("Received message: " + json); |
|
|
log.info("2-Received message: " + json); |
|
|
// }
|
|
|
// }
|
|
|
break; |
|
|
break; |
|
|
case 20050: |
|
|
case 20050: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20050Message); |
|
|
amrMessage = JacksonUtils.parse(json, typeRef20050Message); |
|
|
break; |
|
|
break; |
|
|
case 20060: |
|
|
case 20060: |
|
|
AmrMessage<AmrStatusMessage> statusMessage = JacksonGenericUtils.parse(json, typeRef20060Message); |
|
|
AmrMessage<AmrStatusMessage> statusMessage = JacksonUtils.parse(json, typeRef20060Message); |
|
|
agvStatusAndInfo.agvSOC = statusMessage.content.CurBattery.SOC; |
|
|
agvStatusAndInfo.agvSOC = statusMessage.content.CurBattery.SOC; |
|
|
agvStatusAndInfo.agvBatteryVoltage = statusMessage.content.CurBattery.Voltage; |
|
|
agvStatusAndInfo.agvBatteryVoltage = statusMessage.content.CurBattery.Voltage; |
|
|
// agvStatusAndInfo.agvChargingStatus = statusMessage.content.CurBattery.ChargingStatus;
|
|
|
// agvStatusAndInfo.agvChargingStatus = statusMessage.content.CurBattery.ChargingStatus;
|
|
|
@ -122,12 +140,14 @@ public class AmrMessageHandler { |
|
|
agvStatusAndInfo.x = statusMessage.content.X; |
|
|
agvStatusAndInfo.x = statusMessage.content.X; |
|
|
agvStatusAndInfo.y = statusMessage.content.Y; |
|
|
agvStatusAndInfo.y = statusMessage.content.Y; |
|
|
agvStatusAndInfo.orientation = statusMessage.content.CurOrientation; |
|
|
agvStatusAndInfo.orientation = statusMessage.content.CurOrientation; |
|
|
|
|
|
agvStatusAndInfo.logicX = statusMessage.content.CurLogicX; |
|
|
|
|
|
agvStatusAndInfo.logicY = statusMessage.content.CurLogicY; |
|
|
// if (statusMessage.content.VehicleId == 32) {
|
|
|
// if (statusMessage.content.VehicleId == 32) {
|
|
|
// log.info("Received message: " + json);
|
|
|
// log.info("Received message: " + json);
|
|
|
// }
|
|
|
// }
|
|
|
break; |
|
|
break; |
|
|
case 20100: |
|
|
case 20100: |
|
|
AmrMessage<AmrHeartbeatMessage> heartbeatMessage = JacksonGenericUtils.parse(json, typeRef20100Message); |
|
|
AmrMessage<AmrHeartbeatMessage> heartbeatMessage = JacksonUtils.parse(json, typeRef20100Message); |
|
|
|
|
|
|
|
|
// if (amrMessage.content instanceof AmrHeartbeatMessage) {
|
|
|
// if (amrMessage.content instanceof AmrHeartbeatMessage) {
|
|
|
// AmrHeartbeatMessage msg = (AmrHeartbeatMessage) amrMessage.content;
|
|
|
// AmrHeartbeatMessage msg = (AmrHeartbeatMessage) amrMessage.content;
|
|
|
@ -138,22 +158,22 @@ public class AmrMessageHandler { |
|
|
|
|
|
|
|
|
break; |
|
|
break; |
|
|
case 20147: |
|
|
case 20147: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20147Message); |
|
|
amrMessage = JacksonUtils.parse(json, typeRef20147Message); |
|
|
break; |
|
|
break; |
|
|
case 20148: |
|
|
case 20148: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20148Message); |
|
|
amrMessage = JacksonUtils.parse(json, typeRef20148Message); |
|
|
break; |
|
|
break; |
|
|
case 20149: |
|
|
case 20149: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20149Message); |
|
|
amrMessage = JacksonUtils.parse(json, typeRef20149Message); |
|
|
break; |
|
|
break; |
|
|
case 20150: |
|
|
case 20150: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20150Message); |
|
|
amrMessage = JacksonUtils.parse(json, typeRef20150Message); |
|
|
break; |
|
|
break; |
|
|
case 20200: |
|
|
case 20200: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20200Message); |
|
|
amrMessage = JacksonUtils.parse(json, typeRef20200Message); |
|
|
break; |
|
|
break; |
|
|
case 20250: |
|
|
case 20250: |
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20250Message); |
|
|
amrMessage = JacksonUtils.parse(json, typeRef20250Message); |
|
|
break; |
|
|
break; |
|
|
default: |
|
|
default: |
|
|
log.error("未知消息:{}", json); |
|
|
log.error("未知消息:{}", json); |
|
|
@ -161,4 +181,13 @@ public class AmrMessageHandler { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static AmrStatusAndInfo getAmrStatusAndInfo(int vehicleId) { |
|
|
|
|
|
return agvStatusMap.get(vehicleId); |
|
|
|
|
|
} |
|
|
|
|
|
public static void sendCmd10010(int vehicleId, AmrTaskMessage amrTaskMessage) throws JsonProcessingException, MqttException { |
|
|
|
|
|
MqttClient mqttClient = AppContextHolder.getBean(MqttClient.class, true); |
|
|
|
|
|
String json = JacksonUtils.toJson(amrTaskMessage); |
|
|
|
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|