| | |
| | | private CrnProtocol crnProtocol; |
| | | private int deviceLogCollectTime = 200; |
| | | private boolean resetFlag = false; |
| | | private volatile boolean closed = false; |
| | | private Thread mainThread; |
| | | |
| | | public ZySiemensCrnThread(DeviceConfig deviceConfig, RedisUtil redisUtil) { |
| | | this.deviceConfig = deviceConfig; |
| | |
| | | public void run() { |
| | | this.connect(); |
| | | this.initCrn(); |
| | | while (!Thread.currentThread().isInterrupted()) { |
| | | mainThread = Thread.currentThread(); |
| | | while (!closed && !Thread.currentThread().isInterrupted()) { |
| | | try { |
| | | deviceLogCollectTime = Utils.getDeviceLogCollectTime(); |
| | | int step = 1; |
| | |
| | | step = task.getStep(); |
| | | } |
| | | switch (step) { |
| | | // 读数据 |
| | | case 1: |
| | | readStatus(); |
| | | break; |
| | |
| | | break; |
| | | } |
| | | Thread.sleep(200); |
| | | } catch (InterruptedException ie) { |
| | | Thread.currentThread().interrupt(); |
| | | break; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | @Override |
| | | public boolean connect() { |
| | | zyCrnConnectDriver = new ZyCrnConnectDriver(deviceConfig); |
| | | new Thread(zyCrnConnectDriver).start(); |
| | | zyCrnConnectDriver.start(); |
| | | DeviceConnectPool.put(SlaveType.Crn, deviceConfig.getDeviceNo(), zyCrnConnectDriver); |
| | | return true; |
| | | } |
| | |
| | | |
| | | @Override |
| | | public void close() { |
| | | zyCrnConnectDriver.close(); |
| | | closed = true; |
| | | Thread t = mainThread; |
| | | if (t != null) { |
| | | try { t.interrupt(); } catch (Exception ignore) {} |
| | | } |
| | | if (zyCrnConnectDriver != null) { |
| | | zyCrnConnectDriver.close(); |
| | | } |
| | | } |
| | | |
| | | @Override |