目录
前言
ProcessDB实时/时序数据库支持C#语言开发,本文将针对C#操作ProcessDB检索测点信息进行介绍
一、检索类型及检索条件介绍
检索类型 | 名称 | 检索类型 | 名称 |
FILTER_DB_NAME | 数据库名称 | FILTER_POINT_IO_TYPE | 测点io类型 |
FILTER_TABLE_NAME | 数据表名称 | FILTER_POINT_ARCHIVED | 测点是否保存历史数据 |
FILTER_POINT_NAME | 测点名称 | FILTER_POINT_UNIT | 测点单位 |
FILTER_DB_ALIAS | 数据库别名 | FILTER_POINT_COMPRESS_TYPE | 测点压缩类型 |
FILTER_TABLE_ALIAS | 数据表别名 | FILTER_POINT_COMPRESS_DEV_TYPE | 测点压缩死区类型 |
FILTER_POINT_ALIAS | 测点别名 | FILTER_POINT_VALUE | 测点值 |
FILTER_DB_DESC | 数据库描述 | FILTER_POINT_QULITY | 测点质量 |
FILTER_TABLE_DESC | 数据表描述 | FILTER_POINT_ALARM_STATUS | 测点报警状态 |
FILTER_POINT_DESC | 测点描述 | FILTER_POINT_ALARM_SWITCH | 测点报警开关 |
FILTER_DB_CREATE_TIME | 数据库创建时间 | FILTER_POINT_ALARM_ACK_TYPE | 测点报警方式 |
FILTER_DB_MODIFY_TIME | 数据库修改时间 | FILTER_POINT_ALARM_TYPE | 测点报警类型 |
FILTER_TABLE_CREATE_TIME | 数据表创建时间 | FILTER_POINT_ALARM_LEVEL | 测点报警级别 |
FILTER_TABLE_MODIFY_TIME | 数据表修改时间 | FILTER_POINT_ALARM_GROUP_ID | 测点报警组id |
FILTER_POINT_CREATE_TIME | 测点创建时间 | FILTER_DB_ID | 数据库id |
FILTER_POINT_MODIFY_TIME | 测点修改时间 | FILTER_TABLE_ID | 数据表id |
FILTER_POINT_TYPE | 测点类型 | FILTER_POINT_ID | 测点id |
FILTER_POINT_DATA_TYPE | 测点数据类型 | FILTER_POINT_IS_REFFER | 测点是否引用 |
FILTER_POINT_REFFER_ID | 测点引用id | FILTER_POINT_EXPRESS | 测点表达式 |
FILTER_POINT_PERIOD | 测点计算周期 | FILTER_POINT_CUR_VALUE_OCCUR_TIME | 当前值发生时间 |
FILTER_POINT_PRE_VALUE | 测点前值 | FILTER_POINT_PRE_VALUE_QULITY | 测点前值质量 |
FILTER_POINT_CUR_VALUE_TIME | 测点当前值时间 | FILTER_POINT_TOP_SCALE | 量程高限 |
FILTER_POINT_PRE_VALUE_TIME | 测点前值时间 | FILTER_POINT_TIME_UNIT | 时间单位 |
FILTER_POINT_BOTTOM_SCALE | 量程低限 |
检索条件 | 名称 | 检索条件 | 名称 |
RELATION_EQUAL | 相等 | RELATION_GREAT_EQUAL | 大于等于 |
RELATION_NOT_EQUAL | 不相等 | RELATION_LESS_EQUAL | 小于等于 |
RELATION_GREAT | 大于 | RELATION_LIKE | 相似 |
RELATION_LESS | 小于 |
二、构建条件检索信息
示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Threading;
using ProcessDB;
namespace Object_Filter
{
class Program
{
static void Main(string[] args)
{
TestFilter testFilter = new TestFilter();
int res = testFilter.FilterTest();
}
}
public class TestFilter
{
public class FilterItemArray
{
public int nItemID { get; set; }
public int nRelation { get; set; }
public string szValue { get; set; }
}
public int FilterTest()
{
int res = 0;
/* 初始化连接控制块 */
res = ProcessDBDao.getInstance().init();
if (0 != res)
{
Console.WriteLine("ProcessDBDao init failed! error code: {0}", res);
return res;
}
/* 建立连接 */
res = ProcessDBDao.getInstance().connect("117.78.33.41", 8399, "root", "shuquan230519");
//res = ProcessDBDao.getInstance().connect("192.168.0.186", 8301, "root", "root");
if (0 != res)
{
Console.WriteLine("login failed! error code: {0}", res);
return res;
}
IntPtr intPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(FilterItemSet)));
FilterItemSet filterItemSet = new FilterItemSet();
Marshal.StructureToPtr(filterItemSet, intPtr, true);
filterItemSet.nSize = 1;
IntPtr intPtr1 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(FilterItem)) * 128);
filterItemSet.item = new FilterItem[128];
Marshal.StructureToPtr(filterItemSet.item[0], intPtr1, true);
filterItemSet.item[0].nItemID = (int)FILTER_TYPE.FILTER_POINT_NAME;
filterItemSet.item[0].nRelation = (int)RELATION_TYPE.RELATION_LIKE;
filterItemSet.item[0].szValue = "CPU";
//Thread.Sleep(30000);
IntPtr result_set;
res = ProcessDBDao.getInstance().query_points(ref filterItemSet, 0, 0 ,out result_set);
if (0 > res)
{
Console.WriteLine("Query points: {0} failed!error code: {1}", filterItemSet.item[0].szValue, res);
return res;
}
else
{
Console.WriteLine("Query filter points succeed!");
}
Marshal.FreeHGlobal(intPtr);
Marshal.FreeHGlobal(intPtr1);
int pointCount = 0;
res = ProcessDBDao.getInstance().get_result_count(result_set, out pointCount);
if (0 != res)
{
Console.WriteLine("Get result count failed! error code: {0}", res);
return res;
}
for (uint pointLoop = 0; pointLoop < pointCount; pointLoop++)
{
int pointid = 0;
IntPtr point_name;
IntPtr point_parent_name;
res = ProcessDBDao.getInstance().get_point_id(result_set, pointLoop, out pointid);
res = ProcessDBDao.getInstance().get_point_name(result_set, pointLoop, out point_name);
res = ProcessDBDao.getInstance().get_point_parent_name(result_set, pointLoop, out point_parent_name);
byte pointtype = 0;
res = ProcessDBDao.getInstance().get_point_type(result_set, pointLoop, out pointtype);
//if (pointtype == 2)
//{
// res = ProcessDBDao.getInstance().query_point_express_by_id(pointid, out express);
// if (res != 0)
// {
// Console.WriteLine("Get point express failed! error code: {0}", res);
// Thread.Sleep(30000);
// return;
// }
//}
byte datatype = 0;
IntPtr unit;
float bottomscale = 0;
float scaletop = 0;
float alarmlow = 0;
float alarmhigh = 0;
IntPtr point_desc;
byte achived = 0;
byte ioType = 0;
string time_compress = "";
byte devType = 0;
float deviation = 0;
res = ProcessDBDao.getInstance().get_point_archived(result_set, pointLoop, out achived);
res = ProcessDBDao.getInstance().get_point_io_type(result_set, pointLoop, out ioType);
res = ProcessDBDao.getInstance().get_point_time_compress(result_set, pointLoop, out time_compress);
res = ProcessDBDao.getInstance().get_point_dev_type(result_set, pointLoop, out devType);
res = ProcessDBDao.getInstance().get_point_deviation(result_set, pointLoop, out deviation);
res = ProcessDBDao.getInstance().get_point_data_type(result_set, pointLoop, out datatype);
res = ProcessDBDao.getInstance().get_point_unit(result_set, pointLoop, out unit);
res = ProcessDBDao.getInstance().get_point_scale_bottom(result_set, pointLoop, out bottomscale);
res = ProcessDBDao.getInstance().get_point_scale_top(result_set, pointLoop, out scaletop);
res = ProcessDBDao.getInstance().get_point_alarm_low(result_set, pointLoop, out alarmlow);
res = ProcessDBDao.getInstance().get_point_alarm_high(result_set, pointLoop, out alarmhigh);
res = ProcessDBDao.getInstance().get_point_desc(result_set, pointLoop, out point_desc);
Console.WriteLine("pointId: {0}, pointName: {1}, pointParentName: {2}, pointArchived: {3}," +
" pointIOType: {4}, pointTimeCompress: {5}, pointDevType: {6}, pointDeviation: {7}, pointDataType: {8}," +
" pointUnit: {9}, pointScaleBottom: {10}, pointScaleTop: {11}, pointAlarmLow: {12}, pointAlarmHigh: {13}," +
" pointDesc: {14}", pointid, Marshal.PtrToStringAnsi(point_name), Marshal.PtrToStringAnsi(point_parent_name),
Convert.ToString(achived), Convert.ToString(ioType), Convert.ToString(time_compress), Convert.ToString(devType),
Convert.ToString(deviation), Convert.ToString(datatype), Marshal.PtrToStringAnsi(unit), bottomscale, scaletop,
alarmlow, alarmhigh, Marshal.PtrToStringAnsi(point_desc));
}
ProcessDBDao.getInstance().free_result(result_set);
res = ProcessDBDao.getInstance().close();
return res;
}
}
}