package com.wcs.service.thread;
import com.basic.wcs.plc.core.Plc;
import com.basic.wcs.plc.oper.impl.PlcOperImpl;
import com.basic.wcs.plc.pojo.SweepCodeEquipmentOper;
import com.commin.core.utils.SpringContextHolder;
import com.wcs.service.enums.NotificationTypeEnum;
import com.wcs.service.system.entity.PortDB;
import com.wcs.service.system.service.impl.PortDBServiceImpl;
import com.wcs.service.util.WcsUtil;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
public class PLCSendThread extends Thread {
@Autowired
private static PortDBServiceImpl portDBService = (PortDBServiceImpl)SpringContextHolder.getBean(PortDBServiceImpl.class);
private static Logger log = LoggerFactory.getLogger(PLCSendThread.class);
private String portCode;
public PLCSendThread(String portCode) {
super("库口:" + portCode + "电控发送线程");
this.portCode = portCode;
}
public void run() {
PortDB realPort = portDBService.selectByPortCode(this.portCode);
SweepCodeEquipmentOper sweepCodeEquipmentOper = (SweepCodeEquipmentOper)Plc.deviceBaseNameMap.get((realPort.getScanName() == null) ? "" : realPort.getScanName());
try {
if (sweepCodeEquipmentOper != null) {
PlcOperImpl plcOperImpl = PlcOperImpl.getPlcOper(sweepCodeEquipmentOper.getPlc());
try {
plcOperImpl.readComplete(sweepCodeEquipmentOper.getDeviceNo(), true);
plcOperImpl.dataEligible(sweepCodeEquipmentOper.getDeviceNo(), true);
log.warn("接收到入库任务发送电控信息完成");
} catch (IOException e) {
log.warn("{}向电控发送读取完成信号失败", realPort.getPortName(), e);
}
}
} catch (Exception e) {
WcsUtil.notification(realPort.getPortName() + "扫码现异常", NotificationTypeEnum.ERROR);
log.warn(realPort.getPortName() + "扫码出现异常:{}", e);
}
}
}
JAVA实现WCS与PLC通信
最新推荐文章于 2025-10-28 12:06:04 发布
该文章描述了一个名为PLCSendThread的线程类,负责根据传入的portCode从数据库获取设备信息,然后尝试与PLC通信,执行读取和数据准备操作。如果发生异常,会记录日志并通知错误。
1249

被折叠的 条评论
为什么被折叠?



