基于C#的PISDK研究(理论)
本篇文章主要对PISDK体系结构以及重点类进行阐述。
当我们决定使用PISDK时,可能会使用到下面的类库:

在上表中,PISDK.dll为核心类,大部分主要功能都在该类中。PISDKCommon.dl和PITimeServer.dll为通用类和PI自定义的时间类。我们利用上述3个类库就可以完成访问PI服务的主要功能;最后两个类库提供了一些PI的图形界面和控件对象,这里主要介绍PISDK类。
接下来,我们看一下PISDK的部分体系结构图:

上图引用自SDK手册,从图中我们可以看出在顶级PISDK类下是Servers类,在Servers类下又分为3个类,这3个类中最重要的是Server类,想要使用SDK中的功能必须先要连接到PI服务器,取得一个Server对象;我们还能从该图中发现,部分类都是从集合到对象的结构,例如PIPoints->PIPoint,这也是PISDK的有规律可循的对象结构。
下面介绍一下重点的类。
1. PIPoints
该类就是存放tag标签的类,当然它是集合,要想找到具体的标签按照规律肯定是要得到PIPoint了。当然它只存放标签名,不存放标签值,要想得到值的话也可以调用该类中的方法。
2. PointList
该类也是存放tag标签的类,虽然在上图中没有标出,但是同样重要。那既然都是存放标签它与PIPoints有什么区别呢?该类中有方法可以批量处理tag标签,而PIPoints没有这个功能,PIPoints只能利用循环机制得到PIPoint,再由PIPoint中的方法处理。
3. PIValues
该类在上图中也没有出现,但是也同样重要。该类想必部分读者应该猜到了,它就是存放tag标签值的类。由存放tag的类调用方法就得到了tag的值,存放在该类中,当然它也是集合类了。
4. 其他
其实上图中的每一个类都有各自的功能,并不能说它们没用,只能说可能我们还不会用或者用的概率比较低。比如说上图中的PointAttributes类,它就存放了相关tag的所有属性值;StateSets类,设置存放值的类型;PIGroups类,为存放的值分组等等。
在下一篇中,会使用具体的代码介绍从PI取数的过程。
基于C#的PISDK研究(理论)的更多相关文章
- 基于C#的PISDK研究(代码)
本篇文章主要利用PISDK从PI服务器取数,介绍多种取数方法. 首先需要一些基础的代码,比如获取PI服务的: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
- 基于KVM的虚拟化研究及应用
引言 虚拟化技术是IBM在20世纪70年代首先应用在IBM/370大型机上,这项技术极大地提高了大型机资源利用率.随着软硬件技术的迅速发展,这项属于大型机及专利的技术开始在普通X86计算机上应用并成为 ...
- 基于ifix组态软件研究控制按钮权限
背景: 在前阵子做基于ifix生成电力监控平台时,遇到业主提出的一个需求.关于如何在控制弹窗中,点击相应的合分闸按钮时,优先弹出登录界面,当输入相应的有权限用户名和密码后,才能操作这一要求.后实现如下 ...
- VM 操作系统实例化(基于 KVM 的虚拟化研究及应用--崔泽永(2011))的论文笔记
一.VM操作系统实例化 1.建立虚拟磁盘镜像 虚拟磁盘镜像在逻辑上是提供给虚拟机使用的硬盘, 在物理上可以是 L inux系 统内一普通镜像文件, 也可以是真实的物理磁盘或分区. 本方案设计中将虚拟机 ...
- 两年AI研究经验(教训)总结,进来看看吧!
https://www.jianshu.com/p/2149c9fee166 摘要: 本文以过来人的身份将自身2年的研究经验做了一下分享,希望本文对于即将开始从事人工智能研究的朋友有所帮助. 人工智能 ...
- 中山大学深圳研究院“智能金融和区块链技术”论坛(理论+实战PPT)
中山大学深圳研究院在昨天11月15号在深圳南山区虚拟大学园举办了"智能金融和区块链技术"论坛. 本次论坛邀请了中山大学移动互联网与金融大数据实验室郑子彬教授团队系统地介绍智能金融及 ...
- [256个管理学理论]005.羊群效应(Herd Behavior)
羊群效应(Herd Behavior) 来自于大洋彼岸的让你看不懂的解释: “羊群效应”,也叫“从众效应”,是个人的观念或行为由于真实的或想像的群体的影响或压力,而向与多数人相一致的方向变化的现象.表 ...
- 基于Qt语音识别功能
基于在最近的研究Qt语音识别平台下.在此记录12 首先,语音识别做三件事 1.记录用户的语音文件到本地 2.将用户语音编码 使用flac或者speex进行编码 3.使用第三方语音识别API或者SDK进 ...
- 基于Json序列化和反序列化通用的封装
1. 最近项目已经上线了 ,闲暇了几天 想将JSON的序列化以及反序列化进行重新的封装一下本人定义为JSONHelp,虽然Microsoft 已经做的很好了.但是我想封装一套为自己开发的项目使用.方便 ...
随机推荐
- Form表单之复选框checkbox操作
input复选(checkbox): <label>input复选1组:</label> <input type="checkbox" name=&q ...
- [codevs1036] 商务旅行
题目描述 Description 某首都城市的商人要经常到各城镇去做生意,他们按自己的路线去做,目的是为了更好的节约时间. 假设有N个城镇,首都编号为1,商人从首都出发,其他各城镇之间都有道路连接,任 ...
- PHP | Uploading and reading of files and database 【PHP | 文件的上传和读取与数据库】
这是我自己的一个作业,用的是很基础的代码. 有错误的地方欢迎批评和指正! 这里最容易出错的地方在读取数据后向数据库表中插入数据是的数据格式! 文件上传的页面 uploading.php <htm ...
- jqGrid使用手册
JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信. JQGrid Demo 是一个在线的演示项目.在这里,可以知道jqgrid可以做什么事情.jQgrid 使用详 ...
- Vue插槽 slot
1. 什么是插槽 插槽slot 是往父组件中插入额外内容,实现组件的复用,一个插槽插入到一个对应的标签中 2. 实例: 一个组件中不允许有两个匿名插槽 </head> <body&g ...
- Delphi方法重载
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- elasticsearch 5.x 系列之五 数据导入导出
一.首先给大家发一个福利,分享一个elasticsearch 数据导出工具. esm github 源码地址: https://github.com/medcl/esm 下载编译好的对应elastic ...
- Python学习 :深浅拷贝
深浅拷贝 一.浅拷贝 只拷贝第一层数据(不可变的数据类型),并创建新的内存空间进行储蓄,例如:字符串.整型.布尔 除了字符串以及整型,复杂的数据类型都使用一个共享的内存空间,例如:列表 列表使用的是同 ...
- Leecode刷题之旅-C语言/python-7.整数反转
/* * @lc app=leetcode.cn id=7 lang=c * * [7] 整数反转 * * https://leetcode-cn.com/problems/reverse-integ ...
- python2.X与python3.X爬虫常用的模块变化对应
python2 python3 import urllib2 import urllib.request,urllib.error import urllib.request,urllib.error ...