2.5.2   Pozyskiwanie wartości ze źródeł zewnętrznych

 

Poniższy skrypt okresowo wykonuje operację ping do określonego urządzenia podanego adresem lub nazwą. Na podstawie wyniku ustawia wartość wskazanej zmiennej na true lub false. Zmienna wynikowa powinna znajdować się kanale typu None.

C#

using System;
using
 System.Windows.Forms;
using
 Askom.AsixEvo.Scripting;
using
 System.Net.NetworkInformation;
 

public
 class Ping : IScript
{
   IEventInfo mTimeTickInfo;
   System.Net.NetworkInformation.Ping mPing;
   IVariable mPingVar;
   
string mHost;
 
   
public bool Initialize(string[] aParameters, IApplication aApplication)
   {
      mHost = aParameters[0];
 
      mPing = 
new System.Net.NetworkInformation.Ping();
      mPingVar = aApplication.GetVariable(aParameters[1], 
false);
 
      
if (mPingVar != null && mPing != null)
      {
         mTimeTickInfo = aApplication.RegisterTimeEvent(PingCheck, 
TimeSpan.FromSeconds(5),

                                                        TimeSpan.MinValue);
         return false;
      }
      else
         return true;
   }
 
   public void FinalizeScript()
   {
   }
 
   void PingCheck()
   {
      System.Net.NetworkInformation.PingReply reply = mPing.Send(mHost, 500);
      mPingVar.SetVariableValue(reply.Status==System.Net.NetworkInformation.IPStatus.Success);
   }
}

 

 

VB

Imports System
Imports
 System.Windows.Forms
Imports
 Askom.AsixEvo.Scripting
 

Public
 Class PingVB
    
Implements IScript
 
    
Dim mTimeTickInfo As IEventInfo
    
Dim mPing As System.Net.NetworkInformation.Ping
    
Dim mPingVar As IVariable
    
Dim mHost As String
 
    
Public Function Initialize(ByVal aParameters() As StringByVal aApplication As _

                                     IApplication) As Boolean Implements IScript.Initialize
 
        mHost = aParameters(0)
 
        mPing = New System.Net.NetworkInformation.Ping()
        mPingVar = aApplication.GetVariable(aParameters(1), False)
 
        If (mPingVar Is Nothing Or mPing Is NothingThen
            Return True
        Else
            mTimeTickInfo = aApplication.RegisterTimeEvent(AddressOf PingCheck, _

                                                 TimeSpan.FromSeconds(5), TimeSpan.MinValue)
            Return False
        End If
 
    End Function
 
    Public Sub FinalizeScript() Implements IScript.FinalizeScript
    End Sub
 
    Sub PingCheck()
 
        Dim reply As System.Net.NetworkInformation.PingReply
 
        reply = mPing.Send(mHost, 500)
        mPingVar.SetVariableValue(reply.Status=System.Net.NetworkInformation.IPStatus.Success)
 
    End Sub
 
End
 Class 

 

Funkcja PingCheck wykonywana jest co 5 sekund. Na podstawie rezultatu funkcji Send  obiektu klasy System.Net.NetworkInformation.Ping ustawiana jest wartość zmiennej procesowej.