分享

在Java环境中使用OpenSCADA的utgard子项目连接OPCserver

 gyb98 2011-08-15
 直接上代码:运行需要五个jar包:

分别是:j-Interop三个,

utgrad两个,slf4j两个。

 

package com.casit;

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.AddFailedException;
import org.openscada.opc.lib.da.AutoReconnectController;
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.Server;

public class SCADA {
 public static void main(String[] args){
  AutoReconnectController autos = null;
  try {
   JISystem.setAutoRegisteration(true);
   
   ConnectionInformation ci = new ConnectionInformation();
   ci.setHost("localhost");
   ci.setDomain("localhost");
   ci.setClsid("6E6170F0-FF2D-11D2-8087-00105AA8F840");
   ci.setUser("Administrator");
   ci.setPassword("123");
   
   
   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("test");
            group.setActive(true);
            final Item item = group.addItem("Channel1.Device1.D0");
            item.setActive(true);
            Thread.sleep(100);
            System.out.println("读取值:"+item.read(false).getValue().getObjectAsUnsigned().getValue());
            JIVariant value = JIVariant.makeVariant(new Integer(777));
   item.write(value);
   
   
//   final AccessBase access = new Async20Access(s,100,false);
//            access.addItem ( "sim.test.D0", new DataCallbackDumper());
//            access.bind ();
//            Thread.sleep(100*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();
  }  
 }
}
中间注释的部分采用监听模式。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约