4 应用实例
对于电厂远程监控系统,不仅要访问实时数据信息,而且还要将实时数据直观地显示在客户端屏幕上。为此,我们采用Visio 2000来进行画面组态,把组态的画面供ActiveX控件调用,其中用Visual C++来设计ActiveX控件[5]。
下面是系统中的机组运行分析曲线控件"Trendlineshow1.ocx",其属性如下所示:Host:运行服务代理的主机名或IP地址;Graphics:图形文件的URL;AutoRefresh:是否自动刷新;RefreshTime:刷新周期,缺省为5s;AutoSize:决定是否根据图形大小自动改变控件大小,缺省为真。
控件的工作过程如下:(1)利用CDataPathProperty类异步下载图形文件,自动缓存在本地机器中,需要时则直接从缓冲区中读取,加快了执行速度;(2)利用CSocket类与服务代理建立TCP连接;(3)根据刷新周期启动定时器;(4)处理定时器消息(WM-TIMER),根据图形文件中实时元件的定义向服务代理请求数据,并刷新图形数据显示。
其ASP网页部分代码如下:
<H2 align="center">#4机组运行分析趋势曲线</H2>
<OBJECT id="trendlineshow1" style="Z-INDEX:100;LEFT:-2px;POSITION:absolute;TOP:45px" codeBase="http://10".1.32.222/ocx/show1.ocx classid="clsid:1A2D46F5-434C-42A1-1A9E7B9A2B8B">
<PARAM NAME="_ExtentX" VALUE="2312"> <PARAM NAME="_ExtentY" VALUE="1132">
<PARAM NAME="SQLServerName" VALUE="websvr"> <PARAM NAME="UID"VALUE="RMDSUser">
<PARAM NAME="PWD" VALUE=""> <PARAMNAME="DataBaseName" VALUE="rmdsdb"></OBJECT>
这里,网页代码中提供了OCX的ClassID和文件的URL。客户端浏览时,会在本地注册表中查询该OCX的ClassID,如果本地没有该的控件,或其版本不是最新时,浏览器会自动按照CodeBase指定的路径从服务器下载控件并安装注册到本地机器上。客户端用IE浏览时,其安全级别设置为拥有合法代码签名的ActiveX控件下载。