Wiesemann & Theis GmbH

Tecnología de redes, sensores e interfaces para la industria, la oficina y la informática

Aplicación al Web-IO digital:

Conexión automática con VBScript y Batch-Jobs


En tareas de conexión pequeñas abundantes no merece la pena crear un software especial de aplicación o comprar herramientas complicadas de automatización. Es suficiente con arrancar el proceso deseado de conexión con un chasquido en el icono o entrando un comando. Con el Web-IO Digital y pequeñas VBScripts se pueden realizar tales soluciones con pocas líneas de órdenes.

Conmutación automática con VBScript

VBScript es un idioma de interpretación fácil de programar, que es apoyado de manera estándar por las versiones actuales de Windows. Tal y como hace suponer el nombre (Visual Basic Script), la sintaxis de VBScript está orientada a la de Visual Basic. No es necesario un ambiente especial de desarrollo para la creación de VBScripts- es suficiente un editor de texto. Se recomienda el Editor gratis PSPAD (www.pspad.com), que posee una acentuación de la sintaxis para VBScript. Al salvar VBScripts se utiliza el sufijo de archivo ".vbs".

Los ejemplos descritos a continuación muestran la relación entre VBScript y Web-IO.

Preparativos

1. Poner un Output con VBScript

La escritura siguiente pone al llamarla un Output 0 del Web-IO con la dirección IP 10.40.22.101.


’ VB Script Document
option explicit

Dim objHttp
Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest.5.1")
If objHttp Is Nothing Then Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest")
  objHttp.Option(4) = 256 + 512 + 4096 + 8192
  objHttp.SetTimeouts 0, 5000, 10000, 10000
  objHttp.Open "GET", "http://10.40.22.101/outputaccess0?PW=&State=ON&", FALSE
  objHttp.setRequestHeader "User-Agent", WScript.ScriptName
  objHttp.Send ""
If Not (objHttp.statusText = "OK") Then
  WScript.Echo "Error: " & objHttp.statusText
  WScript.Quit 1
Else
  WScript.Echo objHttp.ResponseText
End If
						

El núcleo de esta escritura es el objeto WinHttp, que se usa para enviar órdenes al Web-IO. La entrega propia de orden tiene lugar con objHttp.Open.

http://10.40.22.101/outputaccess0?PW=&State=ON& determina que el Output 0 de Web-IO 10.40.22.101 debe pasar al estado ON.

Con objHttp.ResponseText se lee la respuesta del Web-IO. En el caso del comando outputaccess el Web-IO devuelve un string compuesto de la palabra output, de un punto y coma y del estado de Output.

Ejemplo output;1

Una descripción detallada de los posibles comandos Web-IO la encontrará en las instrucciones al Web-IO a partir de la página 102.

2. Llamar VBScripts de Batch-Jobs

Batch-Jobs en Windows fueron pensados en un principio para llamar automáticamente comandos Windows. Un ejemplo clásico es también Autoexec.bat en ambientes viejos DOS. En el archivo Batch se introduce una lista con órdenes que al llamarla se procesan consecutivamente.

En sistemas Windows pueden automatizarse así también Scripts y llamadas de programa. Si p. ej. se deben conectar Outputs de diferentes Web-IOs con una sola llamada, también se puede realizar con un Batch-Job.

Los nombres correspondientes de las VBScripts tienen que escribirse uno debajo de otro en el archivo Batch. En Scripts como el indicado arriba, es necesario crear una escritura propia para cada tarea de conexión.

Precisamente en Batch-Jobs es más conveniente crear una escritura de uso universal, que se entrega al llamarla a través de parámetros adicionales, tal como parece la tarea de conexión. En la VBScritp mostrada a continuación pueden entregarse estos parámetros al llamarla:

IP Dirección IP del Web-IO
PORT Puerto TCP del Web-IO Este parámetro es opcional; si no se entrega la escritura utiliza el puerto 80
PW Contraseña del administrador o del operador del Web-IO Este parámetro es opcional; si no se entrega la escritura trabaja sin contraseña
MASK indica en escritura hexadecimal qué Outputs deben ponerse, Este parámetro es opcional; si no se entrega la escritura trabaja con todos los Outputs
STATE indica en escritura hexadecimal en qué estado deben ponerse los Outputs

La llamada de la escritura tiene este aspecto:

setoutput.vbs IP=<IP address> [PORT=<portno.>] [PASSWORD=<password>] [MASK=<hex value>] STATE=<hex value>

’ VB Script Document
option explicit

Dim objArgs, strArg, strArgall
Dim IP, PORT, PASSWORD, MASK, STATE, URLStr
Dim objHttp
Set objArgs = WScript.Arguments

’# Make sure that script starts as console application (best way "cscript //h:cscript")
Dim WshShell : Set WshShell = WScript.CreateObject("WScript.Shell")
If Right(WScript.FullName, Len(WScript.Fullname) - Len(WScript.Path) -1) _ = "WScript.exe" Then
  For each strArg in objArgs
    strArgall = strArgall & " " & strArg
  next
  WshShell.Run "cmd /k cscript " & Chr(34) & WScript.ScriptFullName _ & Chr(34) & strArgall
  WScript.Quit
End If

’# Check if there are Parameters
If WScript.Arguments.count < 1 Then
  WScript.Echo "***********************************"
  WScript.Echo "* Not enough arguments *"
  WScript.Echo "***********************************"
  WScript.Echo ""
  WScript.Echo "Syntyx: setoutput.vbs
  IP=<IP address> [PORT=<portno.>] _
  [PASSWORD=<password>] [MASK=<hex value>] STATE=<hex value>"
  WScript.Quit
End If

’# Read the Parameters
for each strArg in objArgs
  If Left(strArg,3) = "IP=" then
    IP = Mid(strArg, 4, Len(strArg) - 3)
  End If

  If Left(strArg,5) = "PORT="	then
    PORT = Mid(strArg, 6, Len(strArg) - 5)
  End If

  If Left(strArg,9) = "PASSWORD=" then
    PASSWORD = Mid(strArg, 10, Len(strArg) - 9)
  End If

  If Left(strArg,5) = "MASK=" then
    MASK = Mid(strArg, 6, Len(strArg) - 5)
  End If

  If Left(strArg,6) = "STATE=" then
    STATE = Mid(strArg, 7, Len(strArg) - 6)
  End If
Next

’# Mount the command String
If IP <> "" then
  URLStr = "http://" & IP
else
  WScript.Echo "***********************************"
  WScript.Echo "* Not enough arguments : IP *"
  WScript.Echo "***********************************"
End If

If PORT <> "" then
  URLStr = URLStr & ":" & PORT
End If

URLStr = URLStr & "/outputaccess?PW=" & PASSWORD & "&"

If MASK <> "" then
  URLStr = URLStr & "Mask=" & MASK & "&"
End If

If STATE <> "" then
  URLStr = URLStr & "State=" & STATE & "&"
else
  WScript.Echo "***********************************"
  WScript.Echo "*  Not
  enough arguments : STATE   *"
  WScript.Echo "***********************************"
End If

’# Send the Command String via HTTP object
Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest.5.1")
If objHttp Is Nothing Then Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest")
objHttp.Option(4) = 256 + 512 + 4096 + 8192
objHttp.SetTimeouts 0, 5000, 10000, 10000
objHttp.Open "GET", URLStr, FALSE
objHttp.setRequestHeader "User-Agent", WScript.ScriptName
objHttp.Send ""
If Not (objHttp.statusText = "OK") Then
  WScript.Echo "Error: "& objHttp.statusText
  WScript.Quit 1
else
  WScript.Echo objHttp.ResponseText
End If
						

Después de realizada la acción elegida, la escritura devuelve el estado de los Outputs.

p. ej. output:0100

El mesaje de estado se compone de la palabra output, de un punto y coma x del estado del Output en escritura hexadecimal.

CONSEJO: El Windows Scripting Host, existente en dos variantes en cualquier PC Windows, es responsable de ejecutar las VBScripts. Las dos variantes WScript y CScript se diferencian en primer lugar en el tipo de la entrega de datos. Si no está configurado de otra manera, se procesan las escrituras de WScript y se editan los mensajes de texto en una caja diálogo Windows. La desventaja de esto es que el usuario tiene que confirmar cada mensaje para que la escritura continúe. Este tipo de procesamiento es desfavorable para el uso en Batch-Jobs.

Entrando el comando wscrit //H:cscript se define CScript como escritura Host estándar. CScript edita todos los mensajes en una DOSBOX y no espera la confirmación.

La escritura arriba mostrada controla qué Scripthost está activo y se corta si está activa la WSript y se reinicia con la CScript.

A fin de que la escritura pueda trabajar más rápido, se recomienda cambiar en general a la CScript.

Otros ejemplos de programa para la programación del zócalo los encontrarán en las páginas de herramientas al Web-IO. Una descripción detallada sobre los comandos de los modelos Web-IO digitales la encontrará en el manual de referencia.

Descargar ejemplo de programación

Productos



^