| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 其他 ===>> LED显示器复位,显示默认信息 |
| | | */ |
| | | @Async |
| | | public void ledReset() { |
| | | for (LedSlave led : slaveProperties.getLed()) { |
| | | // 获取输送线plc线程 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId()); |
| | | // 命令集合 |
| | | boolean reset = true; |
| | | for (Integer staNo : led.getStaArr()) { |
| | | // 获取叉车站点 |
| | | StaProtocol staProtocol = devpThread.getStation().get(staNo); |
| | | if (staProtocol.getWorkNo() != 0) { |
| | | reset = false; |
| | | break; |
| | | } |
| | | } |
| | | // 获取led线程 |
| | | LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId()); |
| | | // led显示默认内容 |
| | | if (!ledThread.isResetStatus() && reset) { |
| | | if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) { |
| | | log.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | try { |
| | | |
| | | // 间隔 |
| | | Thread.sleep(1500); |
| | | Thread.sleep(1000); |
| | | |
| | | // 系统运行状态判断 |
| | | if (!SystemProperties.WCS_RUNNING_STATUS.get()) { |
| | |
| | | mainService.storeEmptyPlt(); |
| | | // 出库 ===>> 工作档信息写入led显示器 |
| | | mainService.ledExecute(); |
| | | // 其他 ===>> LED显示器复位,显示默认信息 |
| | | mainService.ledReset(); |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | |
| | | public class MessageQueue { |
| | | |
| | | // 堆垛机mq交换机 |
| | | private static final Map<Integer, ConcurrentLinkedQueue<Task>> CRN_EXCHANGE = new ConcurrentHashMap<>(); |
| | | private static final Map<Integer, LinkedBlockingQueue<Task>> CRN_EXCHANGE = new ConcurrentHashMap<>(); |
| | | // 输送线mq交换机 |
| | | private static final Map<Integer, ConcurrentLinkedQueue<Task>> DEVP_EXCHANGE = new ConcurrentHashMap<>(); |
| | | // 条码扫描仪mq交换机 |
| | |
| | | public static void init(SlaveType type, Slave slave) { |
| | | switch (type) { |
| | | case Crn: |
| | | CRN_EXCHANGE.put(slave.getId(), new ConcurrentLinkedQueue<>()); |
| | | CRN_EXCHANGE.put(slave.getId(), new LinkedBlockingQueue<>(1)); |
| | | break; |
| | | case Devp: |
| | | DEVP_EXCHANGE.put(slave.getId(), new ConcurrentLinkedQueue<>()); |
| | |
| | | TextCaptionBxArea area; |
| | | DisplayStyleFactory.DisplayStyle[] styles = DisplayStyleFactory.getStyles().toArray(new DisplayStyleFactory.DisplayStyle[0]); |
| | | private Set<Integer> workNos = new HashSet<>(); |
| | | private boolean resetStatus = false; // 复位状态 |
| | | |
| | | public LedThread(Slave slave) { |
| | | this.slave = slave; |
| | |
| | | // 写数据 |
| | | case 1: |
| | | write((List<LedCommand>)task.getData()); |
| | | break; |
| | | // 复位 |
| | | case 2: |
| | | reset(); |
| | | break; |
| | | default: |
| | | break; |
| | |
| | | page.setFont(new Font("宋体",Font.PLAIN,12)); |
| | | // 设置显示特技为快速打出 |
| | | page.setDisplayStyle(styles[6]); |
| | | area.clearPages(); |
| | | area.addPage(page); |
| | | pf.addArea(area); |
| | | // 更新节目 |
| | | screen.writeProgram(pf); |
| | | resetStatus = false; |
| | | } |
| | | |
| | | |
| | | private void reset() throws Bx5GException { |
| | | if (!resetStatus) { |
| | | // 创建一个数据页 |
| | | TextBxPage page = new TextBxPage(); |
| | | page.newLine("广德中扬物流装备有限公司"); |
| | | page.newLine("自动化立体仓库"); |
| | | page.newLine("浙江中扬物流装备有限公司"); |
| | | // 设置字体 |
| | | page.setFont(new Font("宋体",Font.PLAIN,12)); |
| | | // 设置显示特技为快速打出 |
| | | page.setDisplayStyle(styles[6]); |
| | | area.clearPages(); |
| | | area.addPage(page); |
| | | pf.addArea(area); |
| | | // 更新节目 |
| | | screen.writeProgram(pf); |
| | | resetStatus = true; |
| | | } |
| | | } |
| | | |
| | | |
| | | public static void main(String[] args) throws Exception { |