DDE (Dynamic Data Exchange) es un intercambio dinámico de datos entre aplicaciones de Windows. Para llevar a cabo el intercambio dinámico de datos se necesita una aplicación cliente, que inicia el intercambio, y una aplicación servidor, que devuelve la información deseada o ejecuta las acciones deseadas. FlexPro puede actuar como servidor para la comunicación DDE y ejecutar los comandos enviados por el cliente. Un cliente típico es, por ejemplo, una aplicación de Visual Basic que recibe datos de un dispositivo, los guarda en un archivo y controla a distancia FlexPro para analizar y documentar los datos.
Nota La última interfaz "Automation" de FlexPro ofrece opciones mucho más completas para la comunicación entre FlexPro y una aplicación cliente. Esto es preferible a la interfaz DDE.
Establecimiento de conexión, interacción y terminación
Para poder ejecutar funciones FlexPro desde otros programas de Windows que admitan la comunicación DDE como cliente, primero se debe establecer una conexión DDE. Esto se hace enviando el mensaje WM_DDE_INITIATE, con "FlexPro" o "FlexPro 14" como aplicación y "SYSTEM" como tema. Si la conexión se ha establecido correctamente, se envía un acuse de recibo en forma de mensaje WM_DDE_ACK. Si ha especificado un número de versión, la conexión solo se establecerá correctamente si está instalada esa versión de FlexPro.
A continuación, puede enviarse cualquier número de comandos a FlexPro para su ejecución utilizando el mensaje WM_DDE_EXECUTE. También es posible enviar varios comandos juntos con un solo mensaje. Si un comando se ha recibido correctamente, esto se confirma mediante un mensaje WM_DDE_ACK. Esta confirmación también tiene lugar si las órdenes recibidas no pueden ejecutarse correctamente.
Cuando la aplicación cliente ha enviado todos los comandos deseados a FlexPro, la comunicación DDE finaliza con el envío del mensaje WM_DDE_TERMINATE.
Ejemplo de Visual Basic
He aquí un breve ejemplo de cómo puede realizarse una comunicación DDE, que se utiliza para imprimir un documento, utilizando una aplicación cliente en Visual Basic:
Sub Documento_Click ()
Const NONE = 0, LINK_MANUAL = 2 ' constantes
Dim Cmd, Z ' Variables
' Compilar comandos:
Cmd = "[open(""c:\Bases de datos del proyecto\Prueba.fpd"")]"
Cmd = Cmd & "[openobject(""Documento.doc"")]"
Cmd = Cmd & "[update]"
Cmd = Cmd & "[print]"
Cmd = Cmd & "[closeobjects]"
Cmd = Cmd & "[close]"
If Text1.LinkMode = NONE Then
Z = Shell("FlexPro", 4) ' Iniciar FlexPro
Text1.LinkTopic = "FlexPro 11|System" ' Establecer tema de vínculo
Text1.LinkItem = "" ' Elemento de vínculo
Text1.LinkMode = LINK_MANUAL ' Modo de vínculo
End If
Text1.LinkExecute Cmd ' Ejecutar comandos
End Sub
Este subprograma podría activarse, por ejemplo, si los datos de origen en los que se basa el documento hubieran sido sobrescritos por un programa de registro de valores medidos.
Con los comandos disponibles, es posible abrir y cerrar bases de datos del proyecto, abrir, actualizar, imprimir y cerrar objetos de la base de datos del proyecto y activar carpetas.
Como se describió anteriormente, los comandos disponibles pueden enviarse a FlexPro individualmente o agrupados con un mensaje WM_DDE_EXECUTE.
Nota En FlexPro, generalmente es posible trabajar con varias bases de datos del proyecto al mismo tiempo. Esta opción no está disponible en relación con la comunicación DDE, ya que de lo contrario habría que especificar la base de datos del proyecto relacionada para cada comando, excepto al abrir una base de datos del proyecto.