| | |
| | | RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class); |
| | | redisUtil.set(RedisKeyType.DUAL_CRN_SEND_COMMAND_LOCK.key + deviceConfig.getDeviceNo() + "_" + command.getStation(), "lock", 1); |
| | | CommandResponse response = new CommandResponse(false); |
| | | boolean confirmCommand = command != null && DualCrnTaskModeType.CONFIRM.id.equals(command.getTaskMode()); |
| | | try { |
| | | if (null == command) { |
| | | News.error("双工位堆垛机写入命令为空"); |
| | |
| | | short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10); |
| | | short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12); |
| | | short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14); |
| | | if (taskNo == 0 || taskMode == 0 || sourcePosX == 0 || sourcePosY == 0 || sourcePosZ == 0 || destinationPosX == 0 || destinationPosY == 0 || destinationPosZ == 0) { |
| | | boolean payloadReady; |
| | | if (confirmCommand) { |
| | | // CONFIRM 命令本身不携带库位坐标,零坐标是合法值。 |
| | | payloadReady = taskNo == command.getTaskNo().shortValue() |
| | | && taskMode == command.getTaskMode().shortValue(); |
| | | } else { |
| | | payloadReady = taskNo != 0 |
| | | && taskMode != 0 |
| | | && sourcePosX != 0 |
| | | && sourcePosY != 0 |
| | | && sourcePosZ != 0 |
| | | && destinationPosX != 0 |
| | | && destinationPosY != 0 |
| | | && destinationPosZ != 0; |
| | | } |
| | | if (!payloadReady) { |
| | | result = siemensNet.Write(address, array); |
| | | } else { |
| | | break; |