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.
VBScript es un idioma de interpretación fácil de programar, que es apoyado de manera estándar por Windows 2000, XP y Vista. 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.
¿No tiene todavía un Web-IO® y quiere probar el ejemplo presentado?
no hay problema: Le ponemos a disposición el Web-IO Digital 2xInput, 2xOutput gratis durante 30 días. Rellene sencillamente un pedido muestra y le enviaremos el Web-IO para probar a cuenta abierta. Si nos devuelve el aparato dentro de los 30 días, le abonamos la factura completa.
dotado con una dirección IP - con WuTility no hay problema
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
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 EndIf
'# 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 IfLeft(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
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.