Her zaman söylüyoruz, WinTr Scada script desteği diğer scadalardan kat be kat üstündür. Şimdi anlatacağım konuda bunlardan biridir. WinTr scriptleri haricinde hazırlanmış uygulama dosyalarınızı WinTr scada içersinde çalıştırabilirsiniz. Aynı zamanda script ile script çalıştırmak içinde kullanabilirsiniz. Görsel nesneleri Screen designer’dan Activex ve Net component özelliği ile kullanabiliyorsunuz. Sadece kod içeren uygulamalarınızı ise aşağıdaki script ile çalıştırabilirsiniz.

Not: Kopyala yapıştırdan sonra tırnak işaretlerini düzeltiniz. Test için oluşturduğumuz Class Library kodunu sayfanın en altında bulabilirsiniz.

Imports System

Imports System.IO

Imports System.Windows.Forms

Imports Microsoft.VisualBasic

imports System.Reflection

Namespace WinTr

PublicClass MainClass

Public Tag_1 AsUInt16

PublicSub Load

Dim o AsNew OpenFileDialog

If o.ShowDialog = Windows.Forms.DialogResult.OK Then

Try

Dim objAssembly As System.Reflection.Assembly

objAssembly = Reflection.Assembly.LoadFrom(o.FileName)

Dim objTheClass AsObject = objAssembly.CreateInstance(“ClassLibrary1.Class1”)

‘Dll’ye çalışmadan önce set değerleri gönderme.

ForEach field As FieldInfo In objTheClass.GetType.GetFields

If field.Name = “Tag_1”Then

field.SetValue(objTheClass, Tag_1)

EndIf

Next

‘Dll’nin çalıştırılması.

Dim objResult AsObject = objTheClass.GetType.InvokeMember(“Load”, 256, Nothing, objTheClass, Nothing)

‘Dll çalışması sonucu oluşan değerleri alma.

ForEach field As FieldInfo In objTheClass.GetType.GetFields

If field.Name = “Tag_1”Then

Tag_1 = field.GetValue(objTheClass)

EndIf

Next

Catch ex As Exception

MessageBox.Show(ex.Message)

EndTry

EndIf

EndSub

EndClass

EndNamespace

 

PublicClass Class1

Public Tag_1 As UInt16

PublicSub Load()

MsgBox(“WinTr “ & Tag_1)

Tag_1 += 1

EndSub

EndClass

Not: Script’den script çalıştırmak istediğinizde Namespace ve Class ismini değiştirmelisiniz. WinTr scriptlerinde aşağıdaki gibi olmalıdır.

Dim objTheClass AsObject = objAssembly.CreateInstance(“WinTr.MainClass”)