一、根据点名称订阅实时数据
import java.text.SimpleDateFormat;
import java.util.Date;
import com.processdb.connection.DBConnect;
import com.processdb.connection.DBConnectManager;
import com.processdb.connection.DBPoint;
import com.processdb.driver.common.ConnectInfo;
import com.processdb.driver.common.ConstantValue;
import com.processdb.driver.dao.DBRealtimeDataDao;
import com.processdb.exception.DBException;
public class SubscribeRealtimeDataByNameTest {
private static int i=0;
SimpleDateFormat dateFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public SubscribeRealtimeDataByNameTest() {
}
public int testSubcribeRealtimeData(DBConnect dbConn, String pointNameArray[])
{
try {
Date ct = new Date(System.currentTimeMillis());
System.out.println("========================================");
System.out.println("CurrentTime: " + dateFmt.format(ct));
System.out.println("----------------------------------------");
for(int i=0; i<pointNameArray.length; i++) {
DBPoint point = dbConn.getPointByGlobalName(pointNameArray[i]);
String valueStr = null;
//根据数据类型取出值
switch(point.getDataType())
{
case ConstantValue.TAG_TYPE_DIGITAL:
valueStr = "" + point.getDigital();
break;
case ConstantValue.TAG_TYPE_FLOAT32:
valueStr = "" + point.getFloat32();
break;
case ConstantValue.TAG_TYPE_FLOAT64:
valueStr = "" + point.getFloat64();
break;
case ConstantValue.TAG_TYPE_BOOL:
case ConstantValue.TAG_TYPE_UINT8:
case ConstantValue.TAG_TYPE_INT8:
valueStr = "" + point.getInt8();
break;
case ConstantValue.TAG_TYPE_UINT16:
case ConstantValue.TAG_TYPE_INT16:
valueStr = "" + point.getInt16();
break;
case ConstantValue.TAG_TYPE_UINT32:
case ConstantValue.TAG_TYPE_INT32:
valueStr = "" + point.getInt32();
break;
case ConstantValue.TAG_TYPE_UINT64:
case ConstantValue.TAG_TYPE_INT64:
case ConstantValue.TAG_TYPE_TIME:
valueStr = "" + point.getInt64();
break;
case ConstantValue.TAG_TYPE_STRING:
valueStr = point.getString();
break;
case ConstantValue.TAG_TYPE_BLOB:
valueStr = point.getBlobHex();
break;
}
System.out.println(i + " " + point.getGlobalName() + ": " + valueStr);
}
System.out.println("----------------------------------------");
} catch (Exception e1) {
e1.printStackTrace();
}
return 1;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
//建立实时库链接
ConnectInfo host = new ConnectInfo();
host.setConnectName("testConn"); //链接名称
host.setHostName("127.0.0.1"); //实时库所在服务器的IP地址
host.setHostPort(8301); //实时库程序端口号
host.setPassword("root"); //登录实时库的用户名
host.setUserName("root"); //登录实时库的密码
DBConnect myConn = null;
try {
myConn = DBConnectManager.getInstance().getConnect(host); //建立链接
} catch (DBException e1) {
e1.printStackTrace();
}
SubscribeRealtimeDataByNameTest tester = new SubscribeRealtimeDataByNameTest();
//初始化订阅列表
String pointNameArray[] = {"PUBLIC.SYS.PDB_OS_CPU_USAGE","PUBLIC.SYS.PDB_OS_MEM_USAGE",
"PUBLIC.SYS.PDB_DISK_READ_SPEED","PUBLIC.SYS.PDB_DISK_WRITE_SPEED",
"PUBLIC.SYS.PDB_PROC_CPU_USAGE","PUBLIC.SYS.PDB_PROC_MEM_USED",
"PUBLIC.SYS.PDB_FREE_DISK"};
try {
//订阅实时数据
int res = DBRealtimeDataDao.subcribeRealdataByName(myConn, pointNameArray);
if(res != 0)
{
return;
}
} catch (DBException e1) {
e1.printStackTrace();
}
//循环打印订阅实时数据
while(true)
{
try{
while(i<1000000000)
{
//打印点的实时值
tester.testSubcribeRealtimeData(myConn,pointNameArray);
Thread.sleep(1000);
i++;
}
System.exit(0);
}catch (InterruptedException e) {}
}
}
}
运行结果:
========================================
CurrentTime: 2023-02-11 14:11:53
----------------------------------------
0 PUBLIC.SYS.PDB_OS_CPU_USAGE: 27.828382
1 PUBLIC.SYS.PDB_OS_MEM_USAGE: 83.0
2 PUBLIC.SYS.PDB_DISK_READ_SPEED: 0.0
3 PUBLIC.SYS.PDB_DISK_WRITE_SPEED: 0.0
4 PUBLIC.SYS.PDB_PROC_CPU_USAGE: 0.0
5 PUBLIC.SYS.PDB_PROC_MEM_USED: 402.0
6 PUBLIC.SYS.PDB_FREE_DISK: 105574
----------------------------------------
二、根据点对象订阅实时数据
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import com.processdb.connection.DBConnect;
import com.processdb.connection.DBConnectManager;
import com.processdb.connection.DBPoint;
import com.processdb.connection.DBRoot;
import com.processdb.connection.DBTable;
import com.processdb.driver.common.ConnectInfo;
import com.processdb.driver.common.ConstantValue;
import com.processdb.driver.dao.DBRealtimeDataDao;
import com.processdb.exception.DBException;
public class SubscribeRealtimeDataByDBPointTest {
//private static OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
private static int i=0;
SimpleDateFormat dateFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public SubscribeRealtimeDataByDBPointTest() {
}
public int testSubcribeRealtimeData(DBConnect dbConn, Vector<DBPoint> pointList)
{
try {
//DBRealtimeDataDao.queryPointRealdata(dbConn, pointList);
Date ct = new Date(System.currentTimeMillis());
System.out.println("========================================");
System.out.println("CurrentTime: " + dateFmt.format(ct));
System.out.println("----------------------------------------");
for(int i=0; i<pointList.size(); i++) {
DBPoint point = (DBPoint)pointList.elementAt(i);
String valueStr = null;
switch(point.getDataType())
{
case ConstantValue.TAG_TYPE_DIGITAL:
valueStr = "" + point.getDigital();
break;
case ConstantValue.TAG_TYPE_FLOAT32:
valueStr = "" + point.getFloat32();
break;
case ConstantValue.TAG_TYPE_FLOAT64:
valueStr = "" + point.getFloat64();
break;
case ConstantValue.TAG_TYPE_BOOL:
case ConstantValue.TAG_TYPE_UINT8:
case ConstantValue.TAG_TYPE_INT8:
valueStr = "" + point.getInt8();
break;
case ConstantValue.TAG_TYPE_UINT16:
case ConstantValue.TAG_TYPE_INT16:
valueStr = "" + point.getInt16();
break;
case ConstantValue.TAG_TYPE_UINT32:
case ConstantValue.TAG_TYPE_INT32:
valueStr = "" + point.getInt32();
break;
case ConstantValue.TAG_TYPE_UINT64:
case ConstantValue.TAG_TYPE_INT64:
case ConstantValue.TAG_TYPE_TIME:
valueStr = "" + point.getInt64();
break;
case ConstantValue.TAG_TYPE_STRING:
valueStr = point.getString();
break;
case ConstantValue.TAG_TYPE_BLOB:
valueStr = point.getBlobHex();
break;
}
System.out.println(i + " " + point.getGlobalName() + ": " + valueStr);
}
System.out.println("----------------------------------------");
} catch (Exception e1) {
e1.printStackTrace();
}
// double usedMem = (double)(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory())/1048576;
//
// double totalvirtualMemory = osmxb.getTotalPhysicalMemorySize();
// double freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize();
// double usedMemory = totalvirtualMemory - freePhysicalMemorySize;
// System.out.println(i + " used mem: " + usedMem + "M");
return 1;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
//建立实时库链接
ConnectInfo host = new ConnectInfo();
host.setConnectName("testConn"); //链接名称
host.setHostName("127.0.0.1"); //实时库所在服务器的IP地址
host.setHostPort(8301); //实时库程序端口号
host.setPassword("root"); //登录实时库的用户名
host.setUserName("root"); //登录实时库的密码
DBConnect myConn = null;
try {
myConn = DBConnectManager.getInstance().getConnect(host); //建立链接
} catch (DBException e1) {
e1.printStackTrace();
}
SubscribeRealtimeDataByDBPointTest tester = new SubscribeRealtimeDataByDBPointTest();
Vector<DBPoint> pointList = new Vector<DBPoint>();
// String pname1[] = {"PUBLIC.SYS.PDB_OS_CPU_USAGE","PUBLIC.SYS.PDB_OS_MEM_USAGE",
// "PUBLIC.SYS.PDB_DISK_READ_SPEED","PUBLIC.SYS.PDB_DISK_WRITE_SPEED",
// "PUBLIC.SYS.PDB_PROC_CPU_USAGE","PUBLIC.SYS.PDB_PROC_MEM_USED","PUBLIC.SYS.PDB_FREE_DISK"};
// pointList.clear();
// for(int i=0; i<pname1.length; i++) {
// DBPoint dbpoint11 = dbConn.getPointByGlobalName(pname1[i]);
// if(dbpoint11 != null) pointList.add(dbpoint11);
// }
//指定表
DBRoot root = DBRoot.getInstance(myConn);
DBTable table = root.getCachedDatabaseByName("PUBLIC").getCachedTableByName("SYS");
Vector<DBPoint> pointList1 = table.getCachedPoints();
for (int k = 0; k < pointList1.size(); k++) {
pointList.add(pointList1.get(k));
}
try {
//订阅实时数据
int res = DBRealtimeDataDao.subcribeRealdataByDBPoint(myConn, pointList1);
if(res != 0)
{
return;
}
} catch (DBException e1) {
e1.printStackTrace();
}
//循环打印订阅实时数据
while(true)
{
try{
while(i<1000000000)
{
//打印点的实时值
tester.testSubcribeRealtimeData(myConn,pointList);
Thread.sleep(1000);
i++;
}
System.exit(0);
}catch (InterruptedException e) {}
}
}
}
运行结果:
========================================
CurrentTime: 2023-02-11 14:12:42
----------------------------------------
0 PUBLIC.SYS.PDB_PROC_RUNNING_TIME: 19006.0
1 PUBLIC.SYS.PDB_PROC_CPU_USAGE: 0.0
2 PUBLIC.SYS.PDB_OS_TYPE: null
3 PUBLIC.SYS.PDB_NET_WRITE_SPEED: 0.0
4 PUBLIC.SYS.PDB_FREE_DISK: 105574
5 PUBLIC.SYS.PDB_PROC_MEM_USED: 201.0
6 PUBLIC.SYS.PDB_AVAILABLE_DISK: 105574
7 PUBLIC.SYS.PDB_DISK_READ_SPEED: 0.0
8 PUBLIC.SYS.PDB_OS_RUNNING_TIME: 316.77222
9 PUBLIC.SYS.PDB_PROC_THREAD_COUNT: 122
10 PUBLIC.SYS.PDB_DISK_WRITE_SPEED: 0.0
11 PUBLIC.SYS.PDB_NET_READ_SPEED: 0.0
12 PUBLIC.SYS.PDB_HANDLE_COUNT: 677
13 PUBLIC.SYS.PDB_OS_CPU_USAGE: 19.590883
14 PUBLIC.SYS.PDB_OS_MEM_USAGE: 80.0