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

eryar

PipeCAD - Plant Piping Design Software.
RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
posts - 603, comments - 590, trackbacks - 0, articles - 0

AVEVA PMLNet Guide

Posted on 2014-12-25 22:33 eryar 閱讀(4764) 評(píng)論(2)  編輯 收藏 引用 所屬分類(lèi): 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ì)象的定義通過(guò).NET類(lèi)運(yùn)行時(shí)創(chuàng)建出來(lái),其與.Net類(lèi)有類(lèi)似的方法;代理PML類(lèi)方法的參數(shù)只能是指定的幾種,這幾種類(lèi)型的參數(shù)與.Net類(lèi)型對(duì)應(yīng)。代理PML對(duì)象的用法及功能表現(xiàn)與其他PML對(duì)象相同。

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

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

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

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

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

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

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

2.Design Details

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

wps_clip_image-23162

Figure 2.1 Using PMLNet

使用PMLNet有如下限制:

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

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

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

v 在.NET中調(diào)用PML是不允許的,唯一的辦法就是通過(guò).NET的事件來(lái)調(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類(lèi)型的變量可以傳遞到調(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的安裝目錄下,就可以寫(xiě)一個(gè)PML小程序來(lái)測(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'

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

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

!= object PMLNetExample()

實(shí)例化類(lèi)對(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類(lèi)對(duì)象,就必須遵守一定的規(guī)則。這些規(guī)則如下:

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

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

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

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

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

wps_clip_image-5383

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

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

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

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

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

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

如果沒(méi)有遵守上述條件之一,當(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組件中的類(lèi)還是很方便的,只要滿(mǎn)足PML代理類(lèi)定義的一些規(guī)則就可以了。

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

在PML中調(diào)用.NET組件中類(lèi)是可行的,但直接在C#中調(diào)用PML卻是不可行的。AVEVA也提供了在C#中調(diào)用PML的方式:即通過(guò)事件訂閱,詳細(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)問(wèn)在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沒(méi)用過(guò),不清楚。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 国产区精品在线观看| 国内精品久久久久久 | 欧美成人国产一区二区| 欧美搞黄网站| 国产精品久久久久久久久果冻传媒 | 欧美激情2020午夜免费观看| 欧美精品在线观看播放| 国产精品伦一区| 亚洲电影有码| 亚洲欧美激情视频| 免费黄网站欧美| 亚洲精品乱码久久久久久黑人| 99精品99久久久久久宅男| 欧美一区日本一区韩国一区| 欧美电影美腿模特1979在线看| 国产精品www.| 亚洲国产高清一区| 欧美在线一级视频| 日韩视频免费观看| 久久久国产一区二区| 欧美午夜激情小视频| 在线播放精品| 欧美一区二区在线视频| 最新日韩欧美| 久久一区激情| 国产农村妇女毛片精品久久莱园子| 亚洲欧洲久久| 久久久久综合一区二区三区| 99国产精品一区| 欧美高清不卡| 亚洲国产欧美一区二区三区久久 | 国产一区二区在线观看免费播放| 亚洲美女毛片| 女人天堂亚洲aⅴ在线观看| 亚洲在线第一页| 欧美三级第一页| 亚洲影院一区| 欧美日韩专区在线| 日韩一级黄色大片| 亚洲国产美国国产综合一区二区 | 在线成人国产| 亚洲图片欧洲图片日韩av| 欧美成人自拍视频| 一区二区三区在线视频观看| 午夜精品久久久久久久久久久久| 亚洲人屁股眼子交8| 久热综合在线亚洲精品| 精品51国产黑色丝袜高跟鞋| 久久国产精品久久久久久| 在线中文字幕日韩| 欧美性猛交99久久久久99按摩 | 亚洲婷婷国产精品电影人久久| 久久亚洲国产成人| 99re成人精品视频| 欧美视频中文一区二区三区在线观看| 一区二区激情| 艳女tv在线观看国产一区| 欧美日韩一区二区视频在线| 在线视频日韩| 亚洲免费在线视频一区 二区| 国产精品美女在线| 久久久噜噜噜久久中文字免| 久久精品视频在线看| 亚洲高清电影| 亚洲毛片视频| 国产欧美在线观看| 牛牛影视久久网| 欧美精品久久久久久久免费观看| 在线亚洲精品| 欧美尤物巨大精品爽| 亚洲国产日韩欧美一区二区三区| 亚洲第一福利社区| 久久久噜噜噜久久中文字免| 亚洲黄网站黄| 亚洲午夜av在线| 狠狠入ady亚洲精品经典电影| 欧美国产日韩免费| 国产精品草莓在线免费观看| 久久精品免费观看| 欧美www视频| 午夜亚洲福利| 欧美jizz19性欧美| 亚洲男人av电影| 久久嫩草精品久久久精品| 99精品欧美一区二区三区综合在线 | 国产一区二区三区免费观看| 欧美顶级艳妇交换群宴| 欧美日韩天天操| 久久久亚洲高清| 免费久久99精品国产| 美日韩精品免费观看视频| 欧美精品九九| 久久久综合精品| 欧美视频在线不卡| 欧美sm极限捆绑bd| 国产精品久久婷婷六月丁香| 久久亚洲国产精品一区二区 | 亚洲午夜精品一区二区| 久久国产天堂福利天堂| 一区二区久久久久| 久久婷婷麻豆| 久久精品国产欧美激情| 欧美日韩国产探花| 欧美大片免费观看| 国产日本亚洲高清| 一本色道久久综合狠狠躁篇的优点| 激情五月***国产精品| 一区二区三区四区精品| 亚洲国产一区二区精品专区| 午夜精品亚洲一区二区三区嫩草| 日韩一级大片| 欧美激情在线狂野欧美精品| 免费不卡亚洲欧美| 国内精品久久久| 欧美一级夜夜爽| 欧美一区三区二区在线观看| 欧美日韩国产综合新一区| 欧美国产免费| 亚洲国产你懂的| 久久婷婷综合激情| 久久免费国产精品1| 国产精品少妇自拍| 中文国产成人精品| 亚洲综合首页| 国产精品国产三级国产专播精品人 | 99视频精品在线| 欧美国产视频在线观看| 欧美激情亚洲一区| 亚洲精品国产系列| 欧美1区3d| 91久久精品国产91久久性色tv| 狠狠色丁香久久婷婷综合丁香 | 欧美成人三级在线| 狠狠色伊人亚洲综合网站色| 久久国产日韩欧美| 欧美韩日精品| 妖精成人www高清在线观看| 欧美成人中文字幕| 日韩一区二区久久| 亚洲欧美一区二区在线观看| 国产精品欧美日韩一区二区| 亚洲欧美卡通另类91av| 久久精品五月婷婷| 亚洲电影在线看| 欧美激情第六页| 中文网丁香综合网| 久久精品亚洲一区| 亚洲二区在线| 欧美日韩综合视频网址| 午夜久久资源| 日韩一级大片| 亚洲综合首页| 久久阴道视频| 亚洲精品中文字幕在线| 欧美日韩国产一级| 亚洲自啪免费| 欧美激情a∨在线视频播放| 一本大道久久a久久综合婷婷| 国产精品福利在线| 亚洲综合首页| 欧美激情片在线观看| 亚洲小说区图片区| 国产自产在线视频一区| 欧美黑人国产人伦爽爽爽| 亚洲影音先锋| 亚洲日本欧美日韩高观看| 香蕉乱码成人久久天堂爱免费| 在线观看中文字幕亚洲| 欧美色网一区二区| 久久久久国产免费免费| 一区二区三区精品视频在线观看 | 亚洲精品视频在线播放| 国产精品视频一二三| 久久在线免费视频| 亚洲一区精品视频| 亚洲黄色av一区| 久久日韩粉嫩一区二区三区| 99国产精品久久久| 精品不卡一区| 国产精品人人爽人人做我的可爱| 免费一级欧美在线大片| 亚洲欧美国产77777| 亚洲三级观看| 欧美国产综合| 另类图片国产| 久久九九精品99国产精品| 亚洲欧美日韩网| 9l国产精品久久久久麻豆| 亚洲成色777777女色窝| 国内综合精品午夜久久资源| 国产精品视频你懂的|