|
|
|||||||||
Sí puedes leer esta frase, la página ha sido actualizada. |
| El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España para ofrecer los artículos de la revista Amiga World España. |
![]() |
Comunicación con AREXX Por Tim Grantham Mediante la creación de Scripts
bajo el |
|
Debido a que los Scripts realizados con ARexx pueden comunicarse con diversidad de programas, estos pueden actuar como coordinadores del software, activando programas para que trabajen juntos en la realización de una misma tarea automatizada. Un ejemplo del proceso de comunicación ARexx es el siguiente ejemplo llamado fax.rexx. Fax.rexx utiliza el emulador de terminal VT100/220 del programa Handsnake V2.20, así como las capacidades ofrecidas por CompuServe. Debido a que HandSnake posee un puerto de comunicaciones ARexx, fax,rexx aprovecha el modo de operación invisible que incluye este programa: cuando se invoca con la opción -n, HandSnake se carga y se ejecuta, sin embargo no se abre ninguna pantalla de trabajo del programa. En este modo, este permanece de fondo, actuando como servidor de comunicaciones con cualquier programa que soporte ARexx. Arexx, así como programas compatibles, se comunican a través de mensajes. Cuando un programa desea invocar una función a través de lenguaje ARexx, este deberá especificar el estado del programa con el cual desea comunicarse; por ejemplo la siguiente línea: address 'HANDSHAKE1' permite que el intérprete ARexx envíe todos los mensajes siguientes a la primera tarea que se esté ejecutando bajo el programa HandShake. Un mensaje que seleccione un comando de HandShake (o de un programa específico) no necesita un mensaje de respuesta, pero un mensaje llamando a una función de HandShake necesita una respuesta. Cuando un programa ARexx llama a una función de HandShake, el intérprete ARexx envía un mensaje conteniendo la función solicitada por HandShake, más unos datos adicionales que contienen información para que HandShake ejecute la función. Por ejemplo en fax.rexx la línea: HS_STRING('+++ATZ'cr)
Provoca que el intérprete ARexx envíe el mensaje para que HandShake transmita el mensaje +++ATZ y un retorno de carro a través del puerto serie, exactamente como si este se hubiese escrito con el teclado. La línea: r = HS_GETSTR('OK')
Provoca que HandShake busque, a través de la cadena de caracteres que proviene del MODEM, la palabra OK. El comando previo: RS_TIMEOUT 40 informa a HandShake para que espere dicha cadena sólo durante el período de 40 segundos. Mientras HandShake realiza esta operación, el intérprete ARexx suspende la ejecución del programa ARexx. Sin la variable de tiempo, el programa ARexx permanecería suspendido indefinidamente. Si HandShake encuentra la cadena antes del tiempo de espera, este devuelve un mensaje que contiene la cadena al intérprete ARexx; una vez realizada esta operación se asigna la cadena a la variable 'r' reejecutandose el programa ARexx. Por el contrario, si HandShake no encuentra la cadena antes del tiempo dado, la búsqueda se detiene, enviando un mensaje al intérprete ARexx que contiene la cadena HSERRTIMEOUT. El intérprete ARexx también asignará la cadena a la variable 'r' reejecutando el programa ARexx.
Las siguientes líneas contiene un ejemplo sobre el diálogo entre el interface ARexx y el programa HandShake, en el cual se pueden observar las anteriores descripciones: or = 'od'x
HS_STRING('+++ATZ'cr)
r = HS_GETSTR('OK')
if r = 'OK' then
HS_DIAL('CIS (2400)')
else do
say "Saliendo"
exit 20
end
La primera línea asigna el carácter de salto de línea a la variable cr, con lo cual podrá incluir dicho carácter en una cadena. La segunda línea informa a HandShake para que envíe la cadena +++ATZ, más el salto de línea. Esto provoca el reset en los Módems compatibles Hayes. La tercera línea provoca que HandShake busque la cadena OK, con lo cual se completará la secuencia de reset. Las dos siguientes líneas informan a HandShake para que marque el número de CompuServe, pero sólo si este ha recibido previamente la cadena OK antes del tiempo de espera. De lo contrario el programa ARexx asume que no se ha podido acabar la secuencia de inicialización correctamente y acaba la ejecución del mismo. Otras de las funciones y comandos utilizados por Fax.rexx del programa HandShake son las siguientes: Funciones:
Comandos:
Otros emuladores de terminal que soporten ARexx (como por ejemplo Online!, ATalk III, y VLT) contienen comandos similares. Usted podrá adaptar fax.rexx para que trabaje adecuadamente con su programa de comunicaciones. Para ejecutar fax.rexx, usted deberá ejecutar el programa ARexx en modo residente, Rexxmast. Una vez realizada esta operación, introdúzcase en el CLI y teclee el siguiente comando: rx fax.rexx filename phone_number subject : name Donde 'filename' es el nombre del fichero que contiene el texto de los mensajes, y Phone_number es el número de la máquina destino a la cual se enviará el mensaje. (Nota: CompuServe requiere el código de área) Subject : Name consiste en la cabecera de conexión así como la dirección del sujeto. Usted no puede utilizar espacios en la definición de filename o phone_number; sin embargo en estas dos variables, separadas siempre por dos puntos, podrá introducir varias palabras separadas por espacios. Por ejemplo, si fax.rexx reside en el periférico lógico REXX: la invocación podría ser: rx fax myfax.txt 609-555-5555 project estimate : Ms. Paula Manning, Director Si se olvida del formato, introduzca simplemente rx fax, y fax.rexx le interrogará por el resto de los parámetros. Este método, sin embargo, le previene de la ejecución por separado del programa mediante el comando RUN. Si HandShake no se encuentra ejecutándose, fax.rexx lo cargará y ejecutará en modo invisible. Si HandShake se encuentra ejecutándose, fax.rexx lo dejará ejecutándose cuando acabe su propia tarea. Fax.rexx utiliza las definiciones de comunicación contenidas en el fichero s:handshake.parms para comunicarse con CompuServe (baudios, bits de parada, número de teléfono, y otros). Si desea ver como actúa fax.rexx, deberá arrancar primero el programa HandShake en modo visible, para a continuación realizar las operaciones anteriormente descritas.
|
| Envía esta página web a un amigo: Esta opción está desactivada temporalmente, rogamos disculpen las molestias |
|