package javafish.clients.opc; import javafish.clients.opc.asynch.AsynchEvent; import javafish.clients.opc.asynch.OpcAsynchGroupListener; import javafish.clients.opc.component.OpcGroup; import javafish.clients.opc.component.OpcItem; import javafish.clients.opc.exception.Asynch10ReadException; import javafish.clients.opc.exception.Asynch10UnadviseException; import javafish.clients.opc.exception.CoInitializeException; import javafish.clients.opc.exception.ComponentNotFoundException; import javafish.clients.opc.exception.ConnectivityException; import javafish.clients.opc.exception.CoUninitializeException; import javafish.clients.opc.exception.GroupActivityException; import javafish.clients.opc.exception.GroupUpdateTimeException; import javafish.clients.opc.exception.UnableAddGroupException; import javafish.clients.opc.exception.UnableAddItemException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Iterator; public class AsynchReadAndGroupActivityExample { /** * @param args * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException { AsynchReadAndGroupActivityExample test = new AsynchReadAndGroupActivityExample(); try { /**初始化服务**/ JOpc.coInitialize(); } catch (CoInitializeException e1) { e1.printStackTrace(); } /**建立server对象jopc(IP ,OPCServer名称 ,任意)**/ JOpc jopc = new JOpc("localhost", "KEPware.KEPServerEx.V6", "JOPC1"); /**建立一个组((用户组的标识名称),开始活动的组(true 开始 false 不开始) 默认true,刷新组的时间 毫秒,默认 0.0f)**/ OpcGroup group = new OpcGroup("group1", true, 20, 0.0f); /**name属性表示OPC服务器中的ItemID**/ OpcItem item1 = new OpcItem("c1.d1.m1", true, ""); OpcItem item2 = new OpcItem("c1.d1.m2", true, ""); /**添加到组**/ group.addItem(item1); group.addItem(item2); jopc.addGroup(group); try { /**调用JCustomOpc.connect()连接服务器**/ jopc.connect(); System.out.println("OPC client is connected..."); System.out.println("OPC 服务器连接成功..."); /** 调用JOpc.registerGroups()注册所有的组使用registerGroups()方法注册则OpcItem不用单独注册。如果调用registerGroup(OpcGroup)注册OpcGroup,则还需调用registerItem(OpcGroup,OpcItem)**/ jopc.registerGroups(); System.out.println("OPC groups are registered..."); System.out.println("OPC groups 注册成功..."); /** 调用JOpc.asynch10Read()异步读数据**/ jopc.asynch10Read(group); System.out.println("OPC asynchronous reading is applied..."); System.out.println("OPC 正在异步读取数据..."); OpcGroup downGroup; /**当前时间秒数**/ long start = System.currentTimeMillis(); while ((System.currentTimeMillis() - start) < 10000) { jopc.ping(); downGroup = jopc.getDownloadGroup(); if (downGroup != null) { System.out.println(downGroup); } if ((System.currentTimeMillis() - start) >= 6000) { jopc.setGroupActivity(group, false); } synchronized(test) { /**间隔50毫秒**/ test.wait(1000); } } // change activity jopc.setGroupActivity(group, true); // change updateTime jopc.setGroupUpdateTime(group, 100); start = System.currentTimeMillis(); while ((System.currentTimeMillis() - start) < 10000) { jopc.ping(); downGroup = jopc.getDownloadGroup(); if (downGroup != null) { System.out.println(downGroup); } synchronized(test) { test.wait(2000); } } /**断开异步读取**/ jopc.asynch10Unadvise(group); System.out.println("OPC asynchronous reading is unadvise..."); System.out.println("OPC 断开异步读取..."); /**断开连接**/ JOpc.coUninitialize(); System.out.println("Program terminated..."); System.out.println("断开服务器连接..."); } catch (ConnectivityException e) { e.printStackTrace(); } catch (UnableAddGroupException e) { e.printStackTrace(); } catch (UnableAddItemException e) { e.printStackTrace(); } catch (ComponentNotFoundException e) { e.printStackTrace(); } catch (Asynch10ReadException e) { e.printStackTrace(); } catch (Asynch10UnadviseException e) { e.printStackTrace(); } catch (GroupUpdateTimeException e) { e.printStackTrace(); } catch (GroupActivityException e) { e.printStackTrace(); } catch (CoUninitializeException e) { e.printStackTrace(); } } }
超详细Java使用Jop读取OPC服务器数据
最新推荐文章于 2024-07-29 14:22:26 发布