EDNA实时数据库两种取历史数据值的方式

1. DnaGetNextHistUTC函数:根据游标一个一个值取

int i = EzDNAApiNet.EzDnaApi.History.DnaGetHistDirectRawUTC(szServer,szPoint, Start, End, ref key);

if (i == 0)
{
long l1 = DateTime.Now.Ticks / 10000;

int s = 0;

int i1 = 0;

while (i1 == 0)
{
i1 = EzDNAApiNet.EzDnaApi.History.DnaGetNextHistUTC(key, ref pdValue, ref ptTime, szStatus, 20);

if (pdValue >= dHighLimit)
{
m_ulHighCount++;
}

if (pdValue<= dLowLimit)
{
m_ulLowCount++;
}

if (i1 == 0)
{

//记住开始时间
if (s == 0)
{
EzDNAApiNet.EzDnaApi.Translator.UCTToStringTime(ptTime, szTime, 30);

sStart = szTime.ToString();
}

s++;
}
}

//记住结束时间
EzDNAApiNet.EzDnaApi.Translator.UCTToStringTime(ptTime, szTime, 30);
sEnd = szTime.ToString();

long l2 = DateTime.Now.Ticks / 10000 - l1;

}

2. DnaGetNextHistBlockSmall函数:一次读取批量数据

int i = EzDNAApiNet.EzDnaApi.History.DnaGetHistDirectRawUTC(szServer,szPoint, Start, End, ref key);
StringBuilder szTime = new StringBuilder(30);

double[] pszValueList = new double[1000000];
int[] pszTimeList = new int[1000000];
ushort[] pszStatusList = new ushort[1000000];

string sStart = "";
string eEnd = "";

if (i == 0)
{
long l1 = DateTime.Now.Ticks / 10000;

int s = 0;

do
{

i1 = EzDNAApiNet.EzDnaApi.History.DnaGetNextHistBlockSmall(key, 1000000, out pnCount, pszValueList, pszTimeList, pszStatusList);

if (0 == i1)
{
for (int j = 0; j < pnCount; j++)
{
//开始时间
if (j == 0)
{

EzDNAApiNet.EzDnaApi.Translator.UCTToStringTime(pszTimeList[j], szTime, 30);

sStart = szTime.ToString();

}
else if (j == pnCount-1)
{
//结束时间
EzDNAApiNet.EzDnaApi.Translator.UCTToStringTime(pszTimeList[j], szTime, 30);
eEnd = szTime.ToString();

}

s++;
}

}
}
while (0 == i1);

long l2 = DateTime.Now.Ticks / 10000 - l1;

方式2比方式1性能有10倍的提高。当然,历史数据查询与磁盘IO性能有很大关系。

Edna 动态连接库,说明文档为2.1读服务配置 1 2.1.1 DnaGetServiceList 1 2.2读点配置信息 6 2.2.1 DnaGetPointList 6 2.2.2 DnaGetRTRefs 11 2.2.3 DNAGetRTIds 15 2.2.4 DNAGetRTExtIds(有问题) 17 2.2.5 ShortIdFromLongId 18 2.2.6 LongIdFromShortId 20 2.2.7 ExtendedIdFromShortId 21 2.2.8 ShortIdFromExtendedId 23 2.2.9 DoesIdExist 25 2.2.10 DoesExtendedIdExist 26 2.3选服务 28 2.3.1 DnaSelectService 28 2.4选点 30 2.4.1 DnaSelectPoint 30 2.5选历史点 32 2.5.1 DnaSelectHistoryPoint 32 3. 读实时数据 35 3.1读秒时标实时数据 35 3.1.1 DNAGetRTValue 35 3.1.2 DNAGetRTTimeUTC 37 3.1.3 DNAGetRTStatus 39 3.1.4 DNAGetRTShort 42 3.2读毫秒时标实时数据 44 3.2.1 DNAGetHSFull 44 4. 历史服务接口 49 4.1读秒时标历史数据 49 4.1.1 DnaGetHistAvgUTC 49 4.1.2 DnaGetHistSnapUTC 58 4.1.3 DnaGetHistMaxUTC 67 4.1.4 DnaGetHistMinUTC 76 4.1.5 DnaGetHistInterpUTC 85 4.1.6 DnaGetHistRawUTC 93 4.1.7 DnaGetNextHistUTC 100 4.1.8 DnaGetHistExpectedTotal 101 4.1.9 DnaGetNextHistBlockUTC 104 4.1.10 DNAGetHistAllStatsUTC 108 4.1.11 DNAGetThisHistAllAvg 114 4.1.12 DNAGetThisHistAllMax 115 4.1.13 DNAGetThisHistAllMin 117 4.1.14 GetNextHistAll 118 4.2插入秒时标历史数据 122 4.2.1 DnaHistUpdateInsertValues 122 示例2: 126 4.2.2 DnaHistQueueUpdateInsertValue 127 4.2.3 DnaHistFlushUpdateInsertValues 132 4.3补充秒时标历史数据 132 4.3.1 DnaHistAppendValues 132 4.3.2 DnaHistQueueAppendValue 136 4.3.3 DnaHistFlushAppendValues 140 4.4删除秒时标历史数据 141 4.4.1 DnaHistDeleteValue 141 4.4.2 DnaHistDeleteBlock 145 4.5更改历史数据保留精度 150 4.5.1 DnaHistDefinePoint 150 4.6读毫秒时标历史数据 155 4.6.1 DNAGetHSHistAvgUTC 155 4.6.2 DNAGetHSHistSnapUTC 158 4.6.3 DNAGetHSHistMaxUTC 159 4.6.4 DNAGetHSHistMinUTC 160 4.6.5 DNAGetNextHSHistUTC 161 4.6.6 DNAGetHSHistRawUTC 164 4.7插入毫秒时标历史数据 166 4.7.1 DnaHSHistUpdateInsertValues 166 4.7.2 DnaHSHistQueueUpdateInsertValue 167 4.7.3 DnaHSHistFlushUpdateInsertValues 168 4.8 补充毫秒时标历史数据 169 4.8.1 DnaHSHistAppendValues 169 4.8.2 DnaHSHistQueueAppendValue 170 4.8.3 DnaHSHistFlushAppendValues 171 5.Universal服务接口 172 5.1服务初始化、连接、关闭 172 5.1.1 eDnaMxUniversalInitialize 172 5.1.2 eDnaMxUniversalDataConnect 173 5.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值