|  |  | 
 |  |  |         this.device = device; | 
 |  |  |         this.redisUtil = redisUtil; | 
 |  |  |  | 
 |  |  |         workModeTypes.put(101, new WorkModeTypeDto(101, WorkModeType.NONE, "DB1001.120")); | 
 |  |  | //        workModeTypes.put(101, new WorkModeTypeDto(101, WorkModeType.NONE, "DB1001.120")); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private ArrayList<BasConveyorSta> getStaNo() { | 
 |  |  | 
 |  |  |                     staProtocol.setSiteId(siteId); | 
 |  |  |                     station.put(siteId, staProtocol); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 Thread.sleep(300); | 
 |  |  |                 staProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18) == 1);  // 自动 | 
 |  |  |                 staProtocol.setLoading(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 2) == 1);  // 有物 | 
 |  |  |                 staProtocol.setInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 4) == 1); // 可入 | 
 |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         OperateResultExOne<byte[]> resultBarcode = siemensS7Net.Read("DB100.160", (short) 8); | 
 |  |  |         OperateResultExOne<byte[]> resultBarcode = siemensS7Net.Read("DB100.166", (short) 9); | 
 |  |  |         if (resultBarcode.IsSuccess) { | 
 |  |  |             //条码数据 | 
 |  |  |             String barcode = siemensS7Net.getByteTransform().TransString(resultBarcode.Content,0,8, "UTF-8");// 条码 | 
 |  |  |             String barcode = siemensS7Net.getByteTransform().TransString(resultBarcode.Content,0,9, "UTF-8");// 条码 | 
 |  |  |             BasConveyorStaService basConveyorStaService = SpringUtils.getBean(BasConveyorStaService.class); | 
 |  |  |             DeviceBarcodeService deviceBarcodeService = SpringUtils.getBean(DeviceBarcodeService.class); | 
 |  |  |             BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>().eq(BasConveyorSta::getSiteNo, 31002)); | 
 |  |  | 
 |  |  |         OperateResult write1 = null;    // 工作号 | 
 |  |  |         OperateResult write2 = null;     // 目标站 | 
 |  |  |  | 
 |  |  | //        write1 = siemensS7Net.Write(workNoAddress, workNo);    // 工作号 | 
 |  |  | //        write2 = siemensS7Net.Write(staNoAddress, staNo);    // 目标站 | 
 |  |  |  | 
 |  |  |         write1 = siemensS7Net.Write(workNoAddress, (int) workNo);    // 工作号 | 
 |  |  |         write2 = siemensS7Net.Write(staNoAddress, (int) staNo);    // 目标站 | 
 |  |  |  | 
 |  |  |         if ((write1.IsSuccess && write2.IsSuccess)) { | 
 |  |  |             log.info("写入输送线命令后返回成功,并且回读成功。输送线plc编号={},{},{}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo)); | 
 |  |  |             return true; | 
 |  |  |         }else { | 
 |  |  |             OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", device.getId(), JSON.toJSON(array))); | 
 |  |  |             log.error("写入输送线站点数据失败。输送线plc编号={},站点数据={}", device.getId(), JSON.toJSON(array)); | 
 |  |  |             return false; | 
 |  |  |         } | 
 |  |  |         //任务下发次数 | 
 |  |  |         int writeCount = 0; | 
 |  |  |         do { | 
 |  |  |             write1 = siemensS7Net.Write(workNoAddress, (int) workNo);    // 工作号 | 
 |  |  |             write2 = siemensS7Net.Write(staNoAddress, (int) staNo); | 
 |  |  |             if ((write1.IsSuccess && write2.IsSuccess)) { | 
 |  |  |                 OperateResultExOne<byte[]> readResult = siemensS7Net.Read(staNoAddress, (short) 8); | 
 |  |  |                 if (readResult.IsSuccess) { | 
 |  |  |                     int staNo2 = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0); | 
 |  |  |                     int workNo2 = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 4); | 
 |  |  |                     if (workNo == workNo2 && staNo == staNo2) { | 
 |  |  |                         //任务命令写入成功 | 
 |  |  |                         log.info("写入输送线命令后返回成功,并且回读成功。输送线plc编号={},{},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); | 
 |  |  |                         return true; | 
 |  |  |                     } else {//返回结果是成功了,但是真实值不相同 | 
 |  |  |                         writeCount++; | 
 |  |  |                         log.error("写入输送线命令后返回成功,但是读取任务值不一致。输送线plc编号={},{},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); | 
 |  |  |                     } | 
 |  |  |                 } else { | 
 |  |  |                     writeCount++; | 
 |  |  |                     log.error("写入输送线命令后读取失败。输送线plc编号={},站点数据={},{},写入次数={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount); | 
 |  |  |                 } | 
 |  |  |             }else { | 
 |  |  |                 writeCount++; | 
 |  |  |             } | 
 |  |  |         }while (writeCount < 5) ; | 
 |  |  | //        StaProtocol staProtocol = station.get(siteId); | 
 |  |  | //        if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) { | 
 |  |  | //            staProtocol.setPakMk(true); | 
 |  |  | //        } | 
 |  |  |         OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", device.getId(), JSON.toJSON(array))); | 
 |  |  |         log.error("写入输送线站点数据失败。输送线plc编号={},站点数据={}", device.getId(), JSON.toJSON(array)); | 
 |  |  |         return false; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override |