utgard java opc
org.jinterop.dcom.common.JIRuntimeException: Message not found for errorCode: 0x0004000D
报这个错意味着:连接速率对应不上
解决办法:autos.setGroup设置速率大小,默认大小为1000
package com.tt.test;
import java.net.UnknownHostException;
import java.util.concurrent.Executors;
import org.jinterop.dcom.common.JIException;
import org.jinterop.dcom.common.JISystem;
import org.jinterop.dcom.core.JIVariant;
import org.openscada.opc.lib.common.ConnectionInformation;
import org.openscada.opc.lib.common.NotConnectedException;
import org.openscada.opc.lib.da.AccessBase;
import org.openscada.opc.lib.da.AddFailedException;
import org.openscada.opc.lib.da.Async20Access;
import org.openscada.opc.lib.da.AutoReconnectController;
import org.openscada.opc.lib.da.DataCallback;
import org.openscada.opc.lib.da.DuplicateGroupException;
import org.openscada.opc.lib.da.Group;
import org.openscada.opc.lib.da.Item;
import org.openscada.opc.lib.da.ItemState;
import org.openscada.opc.lib.da.Server;
public class SCADA {
public static void main(String[] args){
AutoReconnectController autos = null;
try {
JISystem.setAutoRegisteration(true);
ConnectionInformation ci = new ConnectionInformation();
ci.setHost("130.0.0.1");
ci.setDomain("");
ci.setProgId("Hollysys.MacsOPCSvr.1");
//ci.setClsid("F8582CF2-88FB-11D0-B850-00C0F0104305");
//ci.setClsid("B6EACB30-42D5-11D0-9517-0020AFAA4B3C");// simatic S7
ci.setUser("Administrator");
ci.setPassword("esd.@2012");
final Server s = new Server(ci,Executors.newSingleThreadScheduledExecutor());
autos = new AutoReconnectController(s);
autos.connect();Thread.sleep(100);
// dumpTree(s.getTreeBrowser().browse(),0);
/* Group group = s.addGroup("group");
group.getName();
group.setActive(true);
// final Item item = group.addItem("Bucket Brigade.String");
final Item item = group.addItem("Group1.PI_3009");// simatic S7
// final Item item = group.addItem("Random.String");
item.setActive(true);
Thread.sleep(1000);
System.out.println("读取值:"+item.read(false).getValue());
JIVariant value = JIVariant.makeVariant(new Integer(777));
item.write(value);*/
//采用监听模式
final AccessBase access = new Async20Access(s,6000,false);
access.addItem ( "Group1.P14rrrrr_3009",new DataCallback() {
@Override
public void changed(Item item, ItemState state) {
System.out.println("-----------11-------"+state);
}
});
access.bind ();
Thread.sleep(10*1000);
access.unbind();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (JIException e) {
e.printStackTrace();
} catch (NotConnectedException e) {
e.printStackTrace();
} catch (DuplicateGroupException e) {
e.printStackTrace();
} catch (AddFailedException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}finally{
autos.disconnect();
}
}
}