青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

AVEVA PMLNet Guide

Posted on 2014-12-25 22:33 eryar 閱讀(4772) 評(píng)論(2)  編輯 收藏 引用 所屬分類: 4.AVEVA Solution

AVEVA PMLNet Guide

eryar@163.com

Abstract. AVEVA PMLNet allows you to instantitate and invoke methods on .NET objects from PML proxy objects. The PML proxy objects behave just like any other PML object. The paper gives a hello world example to demenstrate the PMLNet usage.

Key Words. AVEVA, PMLNet, PML, AVEVA .Net, C#, Managed C++

1. Introduction

AVEVA PMLNet允許在PML代理對(duì)象中實(shí)例化或調(diào)用.Net對(duì)象的方法。代理PML對(duì)象的定義通過.NET類運(yùn)行時(shí)創(chuàng)建出來,其與.Net類有類似的方法;代理PML類方法的參數(shù)只能是指定的幾種,這幾種類型的參數(shù)與.Net類型對(duì)應(yīng)。代理PML對(duì)象的用法及功能表現(xiàn)與其他PML對(duì)象相同。

可被PML調(diào)用的組件(即動(dòng)態(tài)庫dll)通過命令I(lǐng)MPORT加載到AVEVA PDMS/Marine中來。組件可由任意.Net語言來定義,例如:Managed C++(托管C++)、C#或VB .NET等。PMLNet通過反射(reflection)來加載指定的組件。PMLNet引擎(Engine)只會(huì)加載包含有自定義屬性標(biāo)記PMLNetCallable的組件中的類和方法。為了在.Net類中定義代理PML類必須滿足一定的條件(rules)。

綜上所述,在滿足PMLNet一定條件下創(chuàng)建的.Net組件中的類是可以被PML使用的,即可以在PML代碼中調(diào)用.Net組件中的資源。通過這種方式,可以獲得以下幾點(diǎn)優(yōu)勢(shì):

v 在簡(jiǎn)單易學(xué)的PML中使用.Net庫中的海量資源,如Excel的讀寫庫等;

v 程序關(guān)鍵部分用.Net實(shí)現(xiàn),代碼的保密性相對(duì)PML而言要好很多;

v 由于PMLNet引擎支持.Net的組件,即C++、VB.Net寫的庫都可以被PML調(diào)用;

本文主要通過一個(gè)簡(jiǎn)單例子來說明PML代理類的定義方法,掌握后可以擴(kuò)展到在PML中使用托管C++,代碼保密性更好且速度更快。這樣就可以在PML中應(yīng)用更廣泛的資源,來提高程序的開發(fā)效率。

由于本人水平所限,文中的錯(cuò)誤不妥之處在所難免,敬請(qǐng)不吝指教,將不勝感激。歡迎討論交流,共同進(jìn)步。

2.Design Details

下圖所示為如何在PDMS/Marine中使用PMLNet實(shí)現(xiàn)自定義。有一些.NET API可以用來訪問當(dāng)前數(shù)據(jù)庫任務(wù),顯示列表drawlist,幾何geometry和其他功能。用戶可以通過C#的API來訪問PDMS/Marine,但是直接在C#中調(diào)用PML是不可能的(It is not possible to directly to call PML from C#)。然而AVEVA提供了一個(gè)事件機(jī)制來允許PML去訂閱(subscrible)C#發(fā)出的事件(events),如下圖虛線所示。

wps_clip_image-23162

Figure 2.1 Using PMLNet

使用PMLNet有如下限制:

v 只有標(biāo)記了PMLNetCallable且滿足一定條件的.Net類才能被PML調(diào)用;

v 模塊切換并不保留.NET對(duì)象,核心的C++或FORTRAN對(duì)象在模塊切換時(shí)也不會(huì)被保留;

v PML調(diào)用.NET方法時(shí)只能傳入指定類型的變量,其他類型不支持,如DIRECTION, ORIENTATION等;

v 在.NET中調(diào)用PML是不允許的,唯一的辦法就是通過.NET的事件來調(diào)用PML;

v It is not possible to enter ‘partial’ namespaces as you might in C# and expect them to be concatenated;

并不是所有的PML對(duì)象都可以傳遞到所調(diào)用的.NET方法中去,只有下表的PML類型的變量可以傳遞到調(diào)用.NET對(duì)象的方法中去:

wps_clip_image-5893

Figure 2.2 Only PML variables types maybe passed to methods of .NET class

3.Using PMLNet

AVEVA提供了一個(gè)簡(jiǎn)單的PMLNet例子,程序名為PMLNetExample,將這個(gè)例子的代碼例出如下所示:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Collections;

using Aveva.PDMS.PMLNet;

namespace Aveva.Pdms.Examples
{
    [PMLNetCallable()]
    
public class PMLNetExample
    {
        [PMLNetCallable()]
        
public event PMLNetDelegate.PMLNetEventHandler PMLNetExampleEvent;

        [PMLNetCallable()]
        
public PMLNetExample()
        {
        }

        [PMLNetCallable()]
        
public void Assign(PMLNetExample that)
        {
            
//No state
        }

        [PMLNetCallable()]
        
public void RaiseExampleEvent()
        {
            ArrayList args 
= new ArrayList();
            args.Add(
"ExampleEvent");
            
if (PMLNetExampleEvent != null)
                PMLNetExampleEvent(args);
        }

        
        [PMLNetCallable()]
        
public void Method()
        {
            MessageBox.Show(
"Called Method");
        }
    }
}

如上述代碼所示,需要暴露給PML的方法或?qū)傩远家獦?biāo)記上PMLNetCallable。將上述代碼編譯后生成一個(gè)組件放到PDMS/Marine的安裝目錄下,就可以寫一個(gè)PML小程序來測(cè)試效果了。

在CommandWindow中輸入如下圖所示的命令:

wps_clip_image-24546

Figure 3.1 Using PML proxy object in PML

在PML中使用代理PML對(duì)象主要分為以下步驟:

v 使用IMPORT命令導(dǎo)入組件;

import 'PMLNetExample'

其中PMLNetExample是生成的dll組件名;

v 引入命名空間;

using namespace 'Aveva.Pdms.Examples'

命名空間的名稱與C#中命名空間對(duì)應(yīng);

v 實(shí)例化類對(duì)象;

!= object PMLNetExample()

實(shí)例化類對(duì)象的方式與其他PML對(duì)象一樣。

v 調(diào)用對(duì)象方法;

!a.method()

調(diào)用對(duì)象的方法也和PML對(duì)象一樣,得到結(jié)果如下圖所示:

wps_clip_image-3837

Figure 3.2 Test PML proxy object method

4.Rules for Calling .NET

想要在PML中調(diào)用.NET類對(duì)象,就必須遵守一定的規(guī)則。這些規(guī)則如下:

v 可被PML調(diào)用的.NET組件必須由PMLNetCallable標(biāo)記且位于%PDMSEXE%目錄中;

v .NET組件中只有類可以被PML使用,結(jié)構(gòu)體、接口及枚舉除外;

v .NET組件中需要被PML調(diào)用的類必須由PMLNetCallable標(biāo)記;

v .NET組件中需要被PML調(diào)用的方法必須由PMLNetCallable標(biāo)記;

v .NET組件中需要被PML調(diào)用的方法的參數(shù)類型必須為指定的幾種類型;

wps_clip_image-5383

Figure 4.1 Only PML variables types maybe passed to methods of .NET class

v .NET組件中需要被PML調(diào)用的類和方法必須是公有的;

v .NET組件中需要被PML調(diào)用的方法不支持默認(rèn)參數(shù)的定義;

v .NET組件中需要被PML調(diào)用的類和方法名稱是區(qū)分大小寫的;

v .NET組件中需要被PML調(diào)用的類中必須要有Assign()方法;

v .NET組件中需要被PML調(diào)用的類必須有一個(gè)由PMLNetCallable標(biāo)記的公有的默認(rèn)構(gòu)造函數(shù);

如果沒有遵守上述條件之一,當(dāng)加載相應(yīng)的組件時(shí)就會(huì)報(bào)出錯(cuò)誤,錯(cuò)誤信息如下所示:

(46,87) PML: Object definition for XXX could not be found.

5.Conclusion

綜上所述,在PML中調(diào)用.NET組件中的類還是很方便的,只要滿足PML代理類定義的一些規(guī)則就可以了。

由于.NET組件中的類是由.NET語言實(shí)現(xiàn)的,所以托管C++、C#及VB.NET編寫的組件都可以包裝成代理PML類,進(jìn)而被PML調(diào)用。這種方式就更加擴(kuò)大了PML可使用的資源,如C++的庫都可以在PML中使用,且代碼更保密,不易查看源碼。

在PML中調(diào)用.NET組件中類是可行的,但直接在C#中調(diào)用PML卻是不可行的。AVEVA也提供了在C#中調(diào)用PML的方式:即通過事件訂閱,詳細(xì)請(qǐng)參考文檔。

6. References

1. AVEVA .NET Customisation User Guide

2. Example of PML Callable: PMLNetExample

3. AVEVA Software Customisation Guide

4. AVEVA Software Customisation Reference Manual

5. AVEVA Data Access Routines User Guide

 

PDF Version: AVEVA PMLNet Guide

Feedback

# re: AVEVA PMLNet Guide  回復(fù)  更多評(píng)論   

2015-12-28 11:50 by lh
請(qǐng)問在VB.NET中,如何標(biāo)記“PMLNetCallable”?謝謝

# re: AVEVA PMLNet Guide  回復(fù)  更多評(píng)論   

2015-12-28 19:43 by eryar
@lh
Hi 你好!

PMLNetCallable只針對(duì)C#的,VB沒用過,不清楚。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            狠狠色伊人亚洲综合成人| 欧美亚洲视频一区二区| 久久久午夜视频| 久久一综合视频| 99精品国产一区二区青青牛奶| 日韩午夜激情| 国产精品乱码一区二三区小蝌蚪 | 亚洲国产欧美一区二区三区久久 | 亚洲欧美精品在线| 欧美综合国产精品久久丁香| 亚洲高清不卡av| 亚洲免费黄色| 国产自产精品| 亚洲三级免费电影| 国模 一区 二区 三区| 亚洲第一精品福利| 亚洲精品影院| 国产欧美亚洲一区| 最新中文字幕亚洲| 精品88久久久久88久久久| 一区二区av| 亚洲国产美女久久久久| 午夜亚洲视频| 亚洲一区二区三区中文字幕在线| 另类酷文…触手系列精品集v1小说| 性欧美精品高清| 欧美精品在线一区| 欧美成人精品一区| 国产亚洲一区二区三区在线播放| 日韩一区二区精品视频| 亚洲日韩中文字幕在线播放| 久久国产婷婷国产香蕉| 另类综合日韩欧美亚洲| 国产嫩草影院久久久久| 欧美第十八页| 国自产拍偷拍福利精品免费一| 亚洲天堂av电影| 亚洲视屏在线播放| 免费日韩av片| 亚洲精品一区中文| 国产精品国产a级| 午夜亚洲激情| 亚洲国产婷婷香蕉久久久久久| 亚洲天堂av在线免费观看| 国产精品免费一区豆花| 欧美一区二区三区精品电影| 免费毛片一区二区三区久久久| 亚洲欧洲综合| 欧美啪啪一区| 欧美在线日韩精品| 亚洲日韩视频| 欧美在线免费看| 91久久嫩草影院一区二区| 欧美人与禽猛交乱配| 久久av一区二区三区| 亚洲精品一区二区三区在线观看| 欧美久久久久免费| 久久大逼视频| 亚洲黄色在线视频| 午夜精品亚洲| 激情小说亚洲一区| 欧美午夜免费影院| 久久爱www久久做| 夜色激情一区二区| 久久国产视频网站| 一区二区三区久久网| 国产无遮挡一区二区三区毛片日本| 欧美电影免费观看| 亚洲少妇自拍| 欧美在线国产| 99视频有精品| 国产一区二区三区在线免费观看| 欧美美女福利视频| 欧美一级一区| 亚洲一卡二卡三卡四卡五卡| 免费精品99久久国产综合精品| 午夜视频在线观看一区| 亚洲国产成人久久综合| 国产午夜精品在线| 欧美精品自拍偷拍动漫精品| 久久xxxx精品视频| 一本色道久久综合| 蜜臀av国产精品久久久久| 亚洲一级在线| 国产日韩在线视频| 国产精品久久久久9999吃药| 欧美激情国产日韩精品一区18| 午夜亚洲一区| 亚洲大胆女人| 久久这里有精品视频| 亚洲一区二区精品在线| 一区二区精品在线观看| 在线精品一区| 亚洲大胆美女视频| 国产精品主播| 国产精品手机在线| 欧美人成免费网站| 欧美精品国产一区| 久久久久久久国产| 久久久久久网址| 欧美一区激情| 欧美在线视频免费观看| 亚洲天堂网在线观看| 一本久久综合亚洲鲁鲁| 久久久欧美一区二区| 欧美午夜视频在线观看| 欧美日韩不卡一区| 另类亚洲自拍| 免费欧美日韩| 久久久噜噜噜久噜久久| 久色婷婷小香蕉久久| 久久精品视频在线观看| 久久久最新网址| 久久久另类综合| 欧美成人精品影院| 美女91精品| 欧美激情按摩在线| 欧美成人官网二区| 久久久久久精| 老司机成人在线视频| 中文国产成人精品久久一| 日韩午夜在线电影| 欧美高清视频www夜色资源网| 欧美电影免费观看大全| 亚洲二区三区四区| 亚洲国产乱码最新视频| 亚洲另类在线一区| 亚洲免费电影在线| 欧美成人一二三| 亚洲精品社区| 亚洲小视频在线| 久久久午夜精品| 久久久久久9| 欧美日韩精品免费在线观看视频| 欧美日韩高清在线| 国产欧美一区二区精品秋霞影院| 国产日韩1区| 亚洲欧洲日本专区| 日韩一区二区精品| 欧美在线播放视频| 久久精品国产清自在天天线| 欧美成人久久| 亚洲美女av网站| 久久精品二区三区| 能在线观看的日韩av| 国产乱码精品一区二区三| 国产视频不卡| 99re这里只有精品6| 亚洲综合999| 欧美国产视频在线观看| 日韩视频在线免费| 久久久国产一区二区三区| 免费短视频成人日韩| 国产精品一区二区在线| 伊人春色精品| 欧美一级午夜免费电影| 免费成人高清视频| 小嫩嫩精品导航| 欧美成人免费视频| 国际精品欧美精品| 一本久久精品一区二区| 美女日韩欧美| 99pao成人国产永久免费视频| 久久国产黑丝| 欧美精品免费在线| 一区二区三区亚洲| 亚洲狠狠婷婷| 久久人人爽爽爽人久久久| 免费影视亚洲| 久久国产精彩视频| 欧美成人精品| 国产一区视频在线观看免费| 悠悠资源网亚洲青| 欧美一区日本一区韩国一区| 久久亚洲一区二区三区四区| 一本色道久久综合一区| 久久精品国产久精国产思思| 国产精品麻豆va在线播放| 亚洲第一在线综合网站| 久久久久久久高潮| 亚洲夫妻自拍| 久久视频在线看| 欧美日韩精品免费观看视频完整| 亚洲日本乱码在线观看| 亚洲一区二区黄色| 亚洲免费精彩视频| 亚洲大黄网站| 久久精品一区二区三区中文字幕 | 国产啪精品视频| 亚洲一区免费在线观看| 另类激情亚洲| 久久精品视频播放| 国产精品自在线| 性久久久久久久| 日韩一区二区精品在线观看| 欧美日韩精品欧美日韩精品| 亚洲国产精品www| 亚洲大胆美女视频| 久久另类ts人妖一区二区| 国内精品久久久久久|