pjb
2024-07-05 d978d0937401e40b23ef81499c8656257d7bd297
src/main/java/com/zy/core/thread/LedThread.java
@@ -1,9 +1,7 @@
package com.zy.core.thread;
import com.alibaba.fastjson.JSON;
import com.core.common.Cools;
import com.zy.common.entity.Parameter;
import com.zy.common.model.MatDto;
import com.zy.common.utils.News;
import com.zy.core.Slave;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
@@ -63,7 +61,7 @@
    @Override
    @SuppressWarnings({"InfiniteLoopStatement", "unchecked"})
    public void run() {
        connect();
//        connect();
        close();
        while (true) {
            try {
@@ -105,6 +103,7 @@
    }
    private void write(List<LedCommand> list) throws Bx5GException {
        try {
        if (!connect()) {
            return;
        }
@@ -115,24 +114,31 @@
        // 创建一个数据页
        TextBxPage page = new TextBxPage();
        for (LedCommand command : list) {
            page.newLine(command.getTitle() +"("+command.getWorkNo()+")");
            page.newLine("库位:"+ (command.getIoType() < 100 ? command.getLocNo() : command.getSourceLocNo()));
            page.newLine("目标站:"+command.getStaNo());
            if (!command.isEmptyMk()) {
                for (MatDto matDto : command.getMatDtos()) {
                    //去掉小数点
                    String strQty = matDto.getCount().toString();
                    int idx = strQty.lastIndexOf(".");
                    if(idx >= 0){
                        strQty.substring(0,idx);
                    }
                    page.newLine(matDto.getMaknx() + "[数量" + strQty +"]");
            if (command.getIoType() < 100) {
                page.newLine(command.getTitle());
                page.newLine("任务号:" + command.getWorkNo());
                page.newLine("库位号:" + command.getLocNo());
                page.newLine("条码:" + command.getBarcode());
            } else {
                page.newLine(command.getTitle() + "(" + command.getWorkNo() + ")");
                if (!command.isEmptyMk()) {
                    for (MatDto matDto : command.getMatDtos()) {
                        //去掉小数点
                        String strQty = matDto.getCount().toString();
                        int idx = strQty.lastIndexOf(".");
                        if (idx >= 0) {
                            strQty = strQty.substring(0, idx);
                        }
                        page.newLine(matDto.getMatnr());
                        page.newLine(matDto.getMaknx());
                        page.newLine("[数量:" + strQty + "/" + matDto.getTotal().intValue() + "]");
//                    page.newLine(matDto.getMaknx() + "[数量" + strQty +"]");
//                    page.newLine(matDto.getMaknx() + "【数量" + matDto.getCount() +"】");
                    }
                }
                page.newLine("\n");
            }
            page.newLine("\n");
        }
        // 设置字体
        page.setFont(new Font("宋体",Font.PLAIN,12));
        // 设置文本颜色
@@ -143,28 +149,32 @@
        area.addPage(page);
        pf.addArea(area);
        if (pf.validate() != null) {
            log.info("pf out of range");
            News.info("Led"+" - 2"+" - pf out of range");
        } else {
            // 更新节目
            screen.writeProgram(pf);
//            resetStatus = false;
        }
        close();
        }catch (Exception e){
        }
    }
    private void reset() throws Bx5GException {
        if (!connect()) {
            return;
        }
        try {
            if (!connect()) {
                return;
            }
//        if (resetStatus) {
//            return;
//        }
        pf = new ProgramBxFile( 0, screen.getProfile());
        pf.setFrameShow(false);
        // 分别输入X,Y,width,height
        area = new TextCaptionBxArea( 0,0,96,48, screen.getProfile());
        // 创建一个数据页
        TextBxPage page = new TextBxPage();
            pf = new ProgramBxFile(0, screen.getProfile());
            pf.setFrameShow(false);
            // 分别输入X,Y,width,height
            area = new TextCaptionBxArea(0, 0, 96, 48, screen.getProfile());
            // 创建一个数据页
            TextBxPage page = new TextBxPage();
//        List<String> list = null;
//        try {
@@ -180,27 +190,31 @@
//            page.newLine("自动化立体仓库");
//            page.newLine("西格迈股份有限公司");
//        }
        page.newLine("力源智能仓储");
            page.newLine("捷众智能仓储");
        // 设置字体
        page.setFont(new Font("宋体",Font.PLAIN,13));
        // 设置文本颜色
        page.setForeground(Color.red);
        // 设置显示特技为快速打出
        page.setDisplayStyle(styles[6]);
        area.clearPages();
        area.addPage(page);
        pf.addArea(area);
        // 更新节目
        if (pf.validate() != null) {
            log.info("pf out of range");
        } else {
            // 设置字体
            page.setFont(new Font("宋体", Font.PLAIN, 13));
            // 设置文本颜色
            page.setForeground(Color.red);
            // 设置显示特技为快速打出
            page.setDisplayStyle(styles[6]);
            area.clearPages();
            area.addPage(page);
            pf.addArea(area);
            // 更新节目
            screen.writeProgram(pf);
            if (pf.validate() != null) {
                News.info("Led" + " - 3" + " - pf out of range");
            } else {
                // 更新节目
                screen.writeProgram(pf);
//            resetStatus = true;
            }
            close();
        } catch (Exception e){
        }
        close();
    }
    private void write7(List<LedCommand> list) {
        commandList = list;
@@ -211,8 +225,9 @@
            sb.append("目标站:").append(command.getStaNo()).append("\n");
            if (!command.isEmptyMk()) {
                for (MatDto matDto : command.getMatDtos()) {
                    sb.append("物料编码:").append(matDto.getMatNo()).append("\n");
                    sb.append("物料编码:").append(matDto.getMatnr()).append("\n");
                    sb.append("数量:").append(matDto.getCount()).append("\n");
                    sb.append("规格:").append(matDto.getSpecs()).append("\n");
                }
            }
            sb.append("\n");
@@ -231,9 +246,41 @@
    }
    private void error(String msg) {
        errorMsg.delete(0, errorMsg.length());
        errorMsg.append(msg);
    private void error(String msg) throws Bx5GException {
        if (slave.getId() <= 2) {
            if (!connect()) {
                return;
            }
            pf = new ProgramBxFile( 0, screen.getProfile());
            pf.setFrameShow(false);
            // 分别输入X,Y,width,height
            area = new TextCaptionBxArea( 0,0,96,48, screen.getProfile());
            // 创建一个数据页
            TextBxPage page = new TextBxPage();
            page.newLine(msg);
            // 设置字体
            page.setFont(new Font("宋体",Font.PLAIN,12));
            // 设置文本颜色
            page.setForeground(Color.red);
            // 设置显示特技为快速打出
            page.setDisplayStyle(styles[6]);
            area.clearPages();
            area.addPage(page);
            pf.addArea(area);
            if (pf.validate() != null) {
                News.info("Led"+" - 2"+" - pf out of range");
            } else {
                // 更新节目
                screen.writeProgram(pf);
//            resetStatus = false;
            }
            close();
        } else {
            errorMsg.delete(0, errorMsg.length());
            errorMsg.append(msg);
        }
    }
    public void errorReset() {
@@ -249,16 +296,16 @@
        } catch (Exception ignore) {
        }
        if (connRes) {
            log.info("led连接成功 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            News.info("Led"+" - 4"+" - led连接成功 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        } else {
            log.error("led连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            News.error("Led"+" - 5"+" - led连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        }
        return connRes;
    }
    @Override
    public void close() {
        screen.disconnect();
    }
@@ -308,7 +355,7 @@
            // 更新节目
            if (pf.validate() != null) {
                System.out.println("pf out of range");
                log.info("pf out of range");
                News.info("Led"+" - 6"+" - pf out of range");
            } else {
                // 更新节目
                screen.writeProgram(pf);
@@ -318,36 +365,6 @@
        // 继开与控制器之间的链接
//        screen.disconnect();
    }
    public static void main1(String[] args) throws Exception {