JAVA实现WCS与PLC通信

该文章描述了一个名为PLCSendThread的线程类,负责根据传入的portCode从数据库获取设备信息,然后尝试与PLC通信,执行读取和数据准备操作。如果发生异常,会记录日志并通知错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
    } 
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

meslog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值