ProcessDB实时/时序数据库——C#检索测点信息

目录

前言

一、检索类型及检索条件介绍

二、构建条件检索信息


前言

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;
        }
            
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值