Server server =OpcConfig.getServerInstance();finalAccessBase access =newSyncAccess(server, opcConfig.getFrequency());for(String deviceName : deviceNameList){// 这是个回调函数,就是读到值后执行这个打印,是用匿名类写的,当然也可以写到外面去
access.addItem(deviceName,(item, itemState)->{JIString value;try{
value = itemState.getValue().getObjectAsString();}catch(JIException e){thrownewRuntimeException(e);}// 数值与 设备名称用 ## 分隔
stringRedisTemplate.convertAndSend("saveEnvironmentMonitorData", value.getString()+"##"+ item.getId());});}// start reading,开始读值
access.bind();
4 写值
Server server;try{
server =OpcConfig.getServerInstance();}catch(Exception e){thrownewRuntimeException(e);}publicvoidwriteDataToOpcServer(Server server,String name,Boolean isTurnOn)throwsException{//Server server = OpcConfig.getServerInstance();try{finalString itemId ="lighting."+ name;assert server !=null;Group group = server.addGroup("test");finalItem item = group.addItem(itemId);
item.write(newJIVariant(isTurnOn));//移除分组
server.removeGroup(group,true);}catch(finalJIException e){thrownewRuntimeException(e);}}