茶馆

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  34 随笔 :: 0 文章 :: 44 评论 :: 0 Trackbacks
作为一个热能工程的研究生,现在基本上的工作都是编程编程再编程,直到前几天把那个自定义报表系统完成,现在才真正的接触到专业的东西,但是同样还是没有 离开编程,只是对象换成了PI数据库,原来也有师兄有基于PI数据库的程序开发经验,但是基本上用的都是VC6,可惜我不太懂那么高深的玩意儿(虽然我们 老板说这个只要会菜单+对话框就好了,汗一个先),再加上这个要做成B/S架构的,所以我还是选择了C#,没有前例,只好自己研究了,去到OSIsoft 的网站上面看到download里面有.net sample,小开心了一阵,赶快注册了一个帐号,激活,正在开心中,挨了当头一棒,说什么我的公司不对,没有资格注册,我晕,学习你的资料还要这么多条 件?不给软件下载,给文档看看也不行.难道是怕盗版?闲话少说,下面开始正题.==,再补充一下,这个PI数据库可是电厂正规购买的,但是打电话去电厂问 得时候他们信息部竟然没有人知道什么网站资料啊这些,看来是没有基于pi做过什么了,唉,10多万的美金呢?怎么就没有人去研究一下呢?
做个广告,如果这里谁有OSIsoft网站帐号或者在研究这个的,可以联系我啊,大家一起来,我的QQ:315339469,Email:sacprog#gmail.com
还好这里有一个SDK的文档,就从这里开始下手吧,这个文档的版本有点早,大概是2002年的,里面没有.net的例子,还好里面大多数是VB的例子,我想应该可以直接搬过来吧.于是开始动手.
首先欲基于PI-SDK开发PI数据库,必须先安装PI-SDK,然后再VS中新建了一个aspnet网站,添加引用:PI-SDK 1.2 Type Library 和 PISDKCommon 1.2 Type Library
接着看文档上面VB的例子代码是
Option Explicit
Dim srv as Server
Dim pt As PIPoint
for Each srv In Servers
Combo1.AddItem srv.Name
Next srv
为 了把这两个地方改成能运行得C#代码还花费了不少力气,因为原来没有做的东西都是很简单的.net东西,基本上没有用到过和COM组件进行交互.首先说什 么不能实例花,接着又说什么Servers不行,花了很多时间在PISDK下面找了一个能实例化的类PISDKClass,后来又发现原来Servers 是这个对象的一个属性.
private PISDK.IPISDK piSDK= new PISDK.PISDKClass();
private PISDK.Server _piServer;
private PISDK.PIPoint _piPoint;
在Page_Load事件枚举所有的数据源,添加到DropSownlist.
foreach(PISDK.Server item in piSDK.Servers)
{
DropDownList1.Items.Add(srv.Name);
}
设置_piServer为dropdown里面选中的数据库
_piServer = piSDK.Servers[DropDownList1.Text];
然后下面接着防置一个文本框来读取用户输入的Tag点,Tag有点相当于普通数据库的字段.但是又不一样,关于这个暂时不细说了
和一个ListBox来得到这个Tag的所有属性.代码如下:
_piPoint = _piServer.PIPoints[tbxTagName.Text];
ListBox1.Items.Clear();
foreach (PISDK.PointAttribute ptatr in _piPoint.PointAttributes)
{
ListBox1.Items.Add(ptatr.Name);
}
读取Tag属性的值可以用下述属性.
tbxAttValue.Text = _piPoint.PointAttributes[ListBox1.Text].Value.ToString();
如果要更新这个属性的值呢?仍然很简单
PISDK.PointAttribute ptatr;
_piPoint = _piServer.PIPoints[tbxTagName.Text];
ptatr = _piPoint.PointAttributes[lblAttrName.Text];
_piPoint.PointAttributes.ReadOnly = false;
ptatr.Value = tbxAttValue.Text;
_piPoint.PointAttributes.ReadOnly = true;
blNotion.Text = "更新成功!";
其实最后一句想用MessageBox可惜在asp.net下面一直找不到好的使用MessageBox的方法,原来在CodeProject上面找了一个,但是因为后来发现在Atlas的updatepanel中不能使用,也就作罢了
OK,上面就是我根据SDK-Manual里面的一个Basic例子,用C#改写了一下,实现了和例子一样的功能,虽然今天花费了不少时间,最后做出来的东西看起来却很简单,不过自己感受到了收获,第一次发文到首页,有点紧张,呵呵!
下面是一个简单的截图和SDK截图的对比:

我的


SDK的VB例子



posted on 2006-05-30 20:48 laue 阅读(1670) 评论(7)  编辑 收藏 所属分类: DotnetPI数据库

评论

#1楼  2006-05-31 14:38 U2U      
请原谅小弟的无知。我第一次听说PI-SDK。不过有兴趣研究学习
U2USoft@Gmail.com
  回复  引用  查看    

#2楼  2006-05-31 21:45 kevinhlj [未注册用户]
呵呵,我也在做pi的开发,不过,我目前只是取数阶段!
PI-SDK比他提供的sql方式,速度是一个天上,一个地下的区别啊

PS:他的文档太次了,得一个一个试啊!
  回复  引用    

#3楼  2006-05-31 21:48 kevinhlj [未注册用户]
我当时为了读取一个TAG点名,通过pt,妈妈的,试验了两天,才看到另一个
不过,我的TAG点,只有20个字符,在他的范围内也不给我返回,NND,另外,OSIsoft也真TMD的狠,不给资料的说,只给一堆,纸质的文档,那个难看!
  回复  引用    

#4楼  2006-05-31 21:50 kevinhlj [未注册用户]
还有,不知道你们要不要做从二号网向三号网发数据,这个是我们公司的主打产品!
  回复  引用    

#5楼 [楼主] 2006-06-01 08:52 laue      
我也是刚刚开始学习这个,大家可以一起交流
不知道你说的pt是什么?
我觉得文档还好吧,就是老了点,都是VB的例子
  回复  引用  查看    

我只想知道如何用VB调用PI数据库数据,来完成的毕业论文,其它就不想学了,如能帮助,会重谢。
email:nxynyr@126.com
  回复  引用    

#7楼  2007-02-20 22:59 realtime [未注册用户]
VB 调用API 添加一个模块就是了

欢迎访问 www.realtime.net.cn 一个集中的实时数据库BBS
  回复  引用    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-02-02 09:44 编辑过