据了解,麦杰实时库虽之前提供过 jdbc 的连接方式,但后期基本不再维护, 而是统一由 opnet(IOPConnect)方式代替,有完整的二次开发接口说明,可以针对实时及历史数据进行操作。
在文章“http://bbs.raqsoft.com.cn/portal.php?mod=view&aid=644”中,结合 opnet 方式,介绍了从麦杰数据库历史表获取历史数据并处理为可在报表解析展现的数据格式并在润乾报表中展现的实例。
在文章中获取数据时,提到要指定获取数据的点表及测点名,从而获取对应数据。那么如何能获取到所有库的点名和各个点名下的测点名供传参使用也是需要解决的问题。
本文将提供介绍如何获取并返回给集算器调用。
第一、编写集算器调用的方法类,返回序列类型点名及测点
主要代码如下:
// 获取 W3 库的所有点表
public static Sequence getNodeTables(){
String IP = “182.50.125.90”;
intPORT = 8001;
String USER_NAME = “ceshi”;
String PASSWORD = “123456”;
Sequence sd =newSequence();
OPConnect conn =null;
try{
conn =newOPConnect(IP,PORT,USER_NAME,PASSWORD);
// 根据数据库所有点表
OPNode[] nodes = conn.getAllNodesByDBName(“W3”);
System.out.println(“—–”+nodes.length+" ——:"+nodes.toString());
for(inti=0;i
sd.add(nodes_.getName());_
}
}catch(UsersException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
returnsd;
}
// 获取 CS 点表的所有测点
public****staticSequence getPonitNamesList(){
String IP = “182.50.125.90”;
intPORT = 8001;
String USER_NAME = “ceshi”;
String PASSWORD = “123456”;
Sequence sd =newSequence();
OPConnect conn =null;
try{
conn =newOPConnect(IP,PORT,USER_NAME,PASSWORD);
// 根据数据库全局名查询 _
//OPNode[] nodes = conn.getAllNodesByDBName(“W3”);
//System.out.println(“—–”+nodes.length+" ——:"+nodes.toString());_
//for(inti=0;i
// 根据节点全局名获得测点
OPStaticInfo[] infos = conn.getAllPointStaticInfosByNodeName(“W3.CS”);
// 输出测点信息, 这里仅放 cs 的
if(infos !=null&& infos.length != 0) {
for(OPStaticInfo info : infos) {
sd.add(info.getPN());
}
}else{
System.out.println(“该节点下无测点信息!”);
}
conn.close();
//}
}catch(UsersException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
returnsd;
}
第二、集算器脚本中调用
/ 获取所有点表 =invoke(GetMaiJie.getNodeTables)
/ 获取所有点表的测点 =invoke(GetMaiJie.getPonitNamesList)
_ 通过以上两步,我们就可以获取所有点表和测点的序列了。