package com.zy.asrs.wcs.rcs.thread.impl;
|
|
import HslCommunication.Core.Types.OperateResult;
|
import HslCommunication.Core.Types.OperateResultExOne;
|
import HslCommunication.Profinet.Siemens.SiemensPLCS;
|
import HslCommunication.Profinet.Siemens.SiemensS7Net;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.zy.asrs.framework.common.Cools;
|
import com.zy.asrs.framework.common.DateUtils;
|
import com.zy.asrs.framework.common.SpringUtils;
|
import com.zy.asrs.wcs.core.entity.DeviceBarcode;
|
import com.zy.asrs.wcs.core.service.DeviceBarcodeService;
|
import com.zy.asrs.wcs.core.utils.RedisUtil;
|
import com.zy.asrs.wcs.rcs.News;
|
import com.zy.asrs.wcs.rcs.cache.OutputQueue;
|
import com.zy.asrs.wcs.rcs.entity.Device;
|
import com.zy.asrs.wcs.rcs.thread.BarcodeThread;
|
|
import java.text.MessageFormat;
|
import java.util.Date;
|
|
public class SiemensBarcodeThread implements BarcodeThread {
|
|
private Device device;
|
private RedisUtil redisUtil;
|
private SiemensS7Net siemensS7Net;
|
private StringBuffer barcode = new StringBuffer();
|
private String lastBarcode = "";
|
|
public SiemensBarcodeThread(Device device, RedisUtil redisUtil) {
|
this.device = device;
|
this.redisUtil = redisUtil;
|
}
|
|
@Override
|
public String getBarcode() {
|
return String.valueOf(barcode);
|
}
|
|
@Override
|
public boolean setBarcode(String barcode) {
|
this.barcode.delete(0, this.barcode.length());
|
this.barcode.append(barcode);
|
if(!Cools.isEmpty(barcode) && !this.lastBarcode.equals(barcode)) {
|
this.lastBarcode = String.valueOf(this.barcode);
|
News.info("{}号条码器,检索数据:{}", device.getId(), this.barcode);
|
JSONObject jsonObject = new JSONObject();
|
jsonObject.put("time", DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F));
|
jsonObject.put("barcode", barcode);
|
if (OutputQueue.BARCODE.size() >= 32) {
|
OutputQueue.BARCODE.poll();
|
}
|
OutputQueue.BARCODE.offer(jsonObject);
|
return true;
|
}
|
return false;
|
}
|
|
@Override
|
public boolean connect() {
|
boolean result = false;
|
siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, device.getIp());
|
siemensS7Net.setRack(device.getRack().byteValue());
|
siemensS7Net.setSlot(device.getSlot().byteValue());
|
OperateResult connect = siemensS7Net.ConnectServer();
|
if(connect.IsSuccess){
|
result = true;
|
OutputQueue.DEVP.offer(MessageFormat.format( "【{0}】条码器plc连接成功 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), device.getId(), device.getIp(), device.getPort(), device.getRack(), device.getSlot()));
|
News.info("条码器plc连接成功 ===>> [id:{}] [ip:{}] [port:{}]", device.getId(), device.getIp(), device.getPort());
|
} else {
|
OutputQueue.DEVP.offer(MessageFormat.format( "【{0}】条码器plc连接失败!!! ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), device.getId(), device.getIp(), device.getPort(), device.getRack(), device.getSlot()));
|
News.error("条码器plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", device.getId(), device.getIp(), device.getPort());
|
}
|
// siemensS7Net.ConnectClose();
|
return result;
|
}
|
|
@Override
|
public void close() {
|
|
}
|
|
@Override
|
public void run() {
|
// this.connect();
|
// while (true) {
|
// try {
|
// DeviceBarcodeService deviceBarcodeService = SpringUtils.getBean(DeviceBarcodeService.class);
|
// if (deviceBarcodeService == null) {
|
// continue;
|
// }
|
//
|
// DeviceBarcode deviceBarcode = deviceBarcodeService.getOne(new LambdaQueryWrapper<DeviceBarcode>()
|
// .eq(DeviceBarcode::getDeviceId, device.getId())
|
// .eq(DeviceBarcode::getHostId, device.getHostId())
|
// .eq(DeviceBarcode::getStatus, 1));
|
// if (deviceBarcode == null) {
|
// continue;
|
// }
|
//
|
// JSONObject connect = JSON.parseObject(deviceBarcode.getConnect());
|
// String address = connect.getString("address");
|
// Short length = connect.getShort("length");
|
//
|
// // 条码扫描器
|
// OperateResultExOne<byte[]> result = null;
|
// result = siemensS7Net.Read(address, length);
|
// if (result.IsSuccess) {
|
// String barcode = siemensS7Net.getByteTransform().TransString(result.Content, 0, length, "UTF-8");
|
// setBarcode(barcode);
|
// }
|
// } catch (Exception e) {
|
//// e.printStackTrace();
|
// }
|
// }
|
}
|
|
}
|