1、DISTRIBUTED NETWORK ARCHITECTUREeDNA 接口功能说明及示例 C 语言版www.eDNA中国北京市朝阳区朝外大街乙 12 号1 号楼昆泰国际中心 1011 室电话:+86-10-58797132/33/34传真:+86-10-58797136标题 eDNA接口功能说明及示例作者 毛宝平、简怀兵 2007年08月15日修改记录:序号 修改人员 修改时间1 毛宝平 2007年08月23日2 简怀兵 2007年08月23日3 林志腾 2007年08月23日4 周勇 2007年08月23日5 王志斌 2007年08月23日6 林志腾 2007年10月9日目录1. 概述
2、12. 读取配置信息 .12.1 读取服务配置 12.1.1 DnaGetServiceList.12.2 读取点配置信息 62.2.1 DnaGetPointList.62.2.2 DnaGetRTRefs.112.2.3 DNAGetRTIds.152.2.4 DNAGetRTExtIds(有问题) .172.2.5 ShortIdFromLongId.182.2.6 LongIdFromShortId.202.2.7 ExtendedIdFromShortId.212.2.8 ShortIdFromExtendedId.232.2.9 DoesIdExist.252.2.10 DoesE
3、xtendedIdExist.262.3 选取服务 282.3.1 DnaSelectService.282.4 选取点 302.4.1 DnaSelectPoint.302.5 选取历史点 322.5.1 DnaSelectHistoryPoint.323. 读取实时数据 .353.1 读取秒时标实时数据 353.1.1 DNAGetRTValue.353.1.2 DNAGetRTTimeUTC.373.1.3 DNAGetRTStatus.393.1.4 DNAGetRTShort.423.2 读取毫秒时标实时数据 443.2.1 DNAGetHSFull.444. 历史服务接口 .494
4、.1 读取秒时标历史数据 494.1.1 DnaGetHistAvgUTC.494.1.2 DnaGetHistSnapUTC.584.1.3 DnaGetHistMaxUTC.674.1.4 DnaGetHistMinUTC.764.1.5 DnaGetHistInterpUTC.854.1.6 DnaGetHistRawUTC.934.1.7 DnaGetNextHistUTC.1004.1.8 DnaGetHistExpectedTotal.1014.1.9 DnaGetNextHistBlockUTC.1044.1.10 DNAGetHistAllStatsUTC.1084.1.11
5、DNAGetThisHistAllAvg.1144.1.12 DNAGetThisHistAllMax.1154.1.13 DNAGetThisHistAllMin.1174.1.14 GetNextHistAll.1184.2 插入秒时标历史数据 1224.2.1 DnaHistUpdateInsertValues.122示例 2: 1264.2.2 DnaHistQueueUpdateInsertValue .1274.2.3 DnaHistFlushUpdateInsertValues.1324.3 补充秒时标历史数据 1324.3.1 DnaHistAppendValues.1324.
6、3.2 DnaHistQueueAppendValue.1364.3.3 DnaHistFlushAppendValues.1404.4 删除秒时标历史数据 1414.4.1 DnaHistDeleteValue.1414.4.2 DnaHistDeleteBlock.1454.5 更改历史数据保留精度 1504.5.1 DnaHistDefinePoint.1504.6 读取毫秒时标历史数据 1554.6.1 DNAGetHSHistAvgUTC.1554.6.2 DNAGetHSHistSnapUTC.1584.6.3 DNAGetHSHistMaxUTC.1594.6.4 DNAGetH
7、SHistMinUTC.1604.6.5 DNAGetNextHSHistUTC.1614.6.6 DNAGetHSHistRawUTC.1644.7 插入毫秒时标历史数据 1664.7.1 DnaHSHistUpdateInsertValues.1664.7.2 DnaHSHistQueueUpdateInsertValue .1674.7.3 DnaHSHistFlushUpdateInsertValues .1684.8 补充毫秒时标历史数据 .1694.8.1 DnaHSHistAppendValues.1694.8.2 DnaHSHistQueueAppendValue.1704.8
8、.3 DnaHSHistFlushAppendValues.1715.Universal 服务接口 1725.1 服务初始化、连接、关闭 1725.1.1 eDnaMxUniversalInitialize.1725.1.2 eDnaMxUniversalDataConnect.1735.1.3 eDnaMxUniversalCloseSocket.1745.1.4 ISeDnaMxUniversalConnected.1745.1.5 eDnaMxFlushUniversalRecord.1755.2 修改点配置信息 1765.2.1 eDnaMxAddConfigRec.1765.2.2
9、eDnaMxDeleteConfigurationRec.1835.2.3 eDnaMxDeleteLongIdConfigurationRec .1865.3 写入数据 1905.3.1 单点写入 1905.3.2 按点批量写入 2031.概述eDNA 在各个功能层面都提供了丰富的程序接口,为了更加有效地使用 eDNA 的 API 接口,本文从完成各种常用的应用功能的角度,以示例的方式说明 eDNA 程序接口的使用方法和需要注意的事项。测试中使用的库文件为 ezdnaapi.dll(2.3.21.23 ),EZDnaServApi.dll(1.4.0.4)。2.读取配置信息2.1 读取服务配
10、置2.1.1 DnaGetServiceList函数原型:int WINAPI DnaGetServiceList( unsigned short nCount, const char *szType,const char *szStartSvcName,char *szSvcName, unsigned short nSvcName,char *szSvcDesc, unsigned short nSvcDesc, char *szSvcType, unsigned short nSvcType, char *szStatus, unsigned short nStatus);功能说明:从当
11、前目录服务获得指定类型的服务列表运行耗费时间:平均每次运行需要花费时间:531ms返回值说明:成功返回0,不成功返回非0参数说明:unsigned short nCount, 要求返回的服务个数const char *szType, 要查询的服务类型,取值范围有:SSERVER(实时服务)、CMCFG(配置服务)、HISTORY(历史服务)、 SECURITY(安全服务)、BLOBSERV(应用服务)、SVCDIR(目录服务)等等,具体有哪些服务类型可以通过eDNA客户端工具Service Config Manager查询。const char *szStartSvcName, 本次搜索的起始
12、服务名称,如果指定为空字符串,则返回按内部排序所有符合要求的服务配置信息,如果指定为某一服务名,该服务名如果存在于当前目录服务里,则返回包括该服务名及其之后所有符合要求的服务配置信息,如果不存在,则输出结果未定义。char *szSvcName,字符串数组,是传出参数,用来承载返回符合要求的服务名称列表,数组的长度至少为nCount,服务名称的格式是“站点名.服务名”,如果要求返回的服务个数 nCount大于实际存在的服务个数,函数就把用于承载多于实际服务个数的剩余服务名称列表置空。 unsigned short nSvcName, 上述szSvcName字符串数组的最小预留长度 char *
13、szSvcDesc,字符串数组,是传出参数,用来承载返回符合要求的服务名称描述列表,数组的长度至少为nCount。如果要求返回的服务个数 nCount大于实际存在的服务个数,函数就把用于承载多于实际服务个数的剩余服务名称描述列表置空。unsigned short nSvcDesc,上述szSvcDesc字符串数组中用于存储服务名称描述的字符串的预留长度。 char *szSvcType,字符串数组,是传出参数,用来承载返回符合要求的服务类型名,返回的服务类型与传入参数szType相同。如果要求返回的服务个数 nCount大于实际存在的服务个数,函数就把用于承载多于实际服务个数的剩余服务类型名置
14、空。unsigned short nSvcType, 上述szSvcType字符串数组的字符串的最小预留长度。char *szStatus,字符串数组,是传出参数,用来承载返回符合要求的服务名的状态列表,返回的状态有 OK(服务运行中)、Out of Service(服务已经停止)、Failed(意外错误导致服务停止)。如果要求返回的服务个数 nCount大于实际存在的服务个数,函数就把用于承载多于实际服务个数的剩余服务名的状态列表置空。unsigned short nStatus 上述szStatus字符串数组的最小预留长度。所在头文件:EZDnaApi.h所在库:EZDnaApi.libE
15、ZDnaApi.dll示例:/*/* *程序中要求返回的服务个数设置为 10*/#include#include#include“ezDnaApi.h“const int COUNT=11;const int size=30;int main()char *pszSvcNamesize, *pszSvcDescsize, *pszSvcTypesize,*pszStatussize;for (int i = 0; i server;DWORD dwStart=:GetTickCount(); /DnaGetServiceList()函数运行的开始时间;int ret = DnaGetServi
16、ceList( COUNT,server,“,pszSvcName, size,pszSvcDesc, size,pszSvcType, size,pszStatus,size);DWORD dwEnd=:GetTickCount(); /DnaGetServiceList()函数运行的结束时间;cout#include #include #pragma comment(lib,“ezdnaapi.lib“)int main(int argc, char* argv)char szPoint32 = “TEST.UNIVSERV.AI0001“;double pdValue = 0;char
17、szTime32 = “;unsigned short nTime = 32;char szStatus32 = “;unsigned short nStatus = 32;char szDesc128 = “;unsigned short nDesc = 128;char szUnits64 = “;unsigned short nUnits = 64;int rnet = DNAGetRTAll( szPoint ,cout#include #include #pragma comment(lib,“ezdnaapi.lib“)int main(int argc, char* argv)c
18、har szPoint32 = “TEST.UNIVSERV.AI0001“;double pdValue = 0;long ptTime = 0;char szStatus32 = “;unsigned short nStatus = 32;char szDesc128 = “;unsigned short nDesc = 128;char szUnits64 = “;unsigned short nUnits = 64;int rnet = DNAGetRTAllUTC( szPoint ,cout#include #include “ezdnaapi.h“#pragma comment(
19、lib,“c:dnalibezdnaapi.lib“)int main(int argc, char* argv)char szPoint32 = “INSTEP.DCSUNIV.TEST1“;double pdValue = -1;DWORD dwStart = :GetTickCount();int nRet = DNAGetRTValue(szPoint, DWORD dwEnd = :GetTickCount();cout#include #include “ezdnaapi.h“#pragma comment(lib,“ezdnaapi.lib“)int main(int argc,
20、 char* argv)char szPoint32 = “TEST.UNIVSERV.AI0001“;char pdValue32 = “;unsigned short nValue = 32;DWORD dwStart = :GetTickCount();int nRet = DNAGetRTValueAsString(szPoint, pdValue, nValue);DWORD dwEnd = :GetTickCount();cout#include #include “ezdnaapi.h“#pragma comment(lib,“ezdnaapi.lib“)int main(int
21、 argc, char* argv)char szPoint32 = “TEST.UNIVSERV.AI0001“;char szTime32 = “;short nTime = 32;int nRet = DNAGetRTTime(szPoint,szTime,nTime);cout#include #include “ezdnaapi.h“int main(int argc, char* argv)char szPoint32 = “INSTEP.DCSUNIV.TEST1“;long ptTime = 0;int nRet = DNAGetRTTimeUTC(szPoint,cout#i
22、nclude #include “ezdnaapi.h“#pragma comment(lib,“c:dnalibezdnaapi.lib“)int main(int argc, char* argv)char szPoint32 = “INSTEP.DCSUNIV.TEST1“;char szStatus32;int nRet = DNAGetRTStatus(szPoint,szStatus,32);cout#include #include “ezdnaapi.h“#pragma comment(lib,“ezdnaapi.lib“)int main(int argc, char* ar
23、gv)char szPoint27 = “TEST.UNIVSERV.AI0001“;char szDesc24=“;int nRet = DNAGetRTDesc(szPoint,szDesc,24);cout#include #include “ezdnaapi.h“#pragma comment(lib,“ezdnaapi.lib“)int main(int argc, char* argv)char szPoint32 = “TEST.UNIVSERV.AI0001“;char szUnits2=“;int nRet = DNAGetRTUnits(szPoint,szUnits,2)
24、;cout#include #include “ezdnaapi.h“#pragma comment(lib,“c:dnalibezdnaapi.lib“)int main(int argc, char* argv)char szPoint32 = “INSTEP.DCSUNIV.TEST1“;double pdValue = 0;long ptTime = 0;unsigned short pusStatus = 0;int nRet = DNAGetRTShort( szPoint, cout“DNAGetRTShort返回: “nRetendl;char szTime128;UCTToStringTime(ptTime,szTime,sizeof(szTime);cout“点 “szPoint“的值为: “pdValueendl;cout“点 “szPoint“的 UTC时间标签为: “ptTimeendl;cout“点 “szPoint“的时间标签为: “szTimeendl;cout“点 “szPoint“的品质状态为: “pusStatusendl;return 0;示例程序输出:示例结果:用 Configuration Manager 查看如下: