Innova Service Tecnología w w w. iste c.cl Guía de Programación para Visual Basic™ 6 Versión 1.1 Indice Introducción………………………………………………………………………………………………….1 Instalación y Enlace a Proyecto Visual Basic………………………………………………………….3 Consideraciones Generales Nombres de funciones y procedimientos…………………………………………………………5 Uso de puerto COMM (RS232) o USB…………………………………………………………...5 Valores de retorno de las funciones y condiciones de error……………………………………6 Tabla Resumen de Funciones y Subrutinas Visual Basic…………………………………………..8 Referencia de Funciones y Subrutinas A. Rutinas de Inicialización y Término………………………………………………………...10 B. Funciones de entradas y salidas……………………………………………………………13 C. Funciones especiales………………………………………………………………………...21 QUADRALAB Introducción Microsoft™ Visual Basic™ es uno de los lenguajes de programación Windows más difundidos actualmente. Combina facilidad de uso, programación atractiva y recursos adecuados tanto para principiantes como para programadores expertos. Figura 1. Ejemplo del entorno Visual Basic 6.0 en Windows XP. La primera versión se presentó a principios de los ’90, hasta llegar a la actual, que forma parte de Visual Studio 2005. No obstante, para muchas aplicaciones se sigue utilizando la versión 6.0 (aparecida en 1998) debido a la gran cantidad de licencias adquiridas para esa versión y a la preferencia de muchos programadores por sobre versiones posteriores más complejas. QuadraLab utiliza una librería DLL especial para permitir su control y administración vía Visual Basic: Guía de Programación en Visual Basic™ 6 Pag.1 QUADRALAB PC Compatible Entorno de programación Visual Basic 6 DLL de control Puerto COM o USB QuadraLab Figura 2. Estructura conceptual de la comunicación via DLL. Como se puede ver en el esquema, el DLL administra los detalles de la comunicación, actuando como una “capa protectora” entre el programador Visual Basic y el hardware del módulo. Mediante el DLL es posible: • Acceder a las entradas y salidas de QuadraLab, tanto digitales como análogas. • Programar algoritmos complejos de control, permitiendo a QuadraLab comportarse como una interface industrial. • Acceder a información especial del módulo, como número de serie y nombre del equipo. Los detalles de la comunicación serial son enmascarados por el DLL, ofreciendo un conjunto de funciones de alto nivel como ‘leer entrada’ o ‘cambiar salida’. Sólo se requiere que el programador invoque una función especial de inicialización y proporcione el número de puerto COM (Virtual USB o puerto COM físico) y lo demás es realizado automáticamente por el DLL. Nota: El software de control del DLL requiere para su correcto funcionamiento la versión SP6 de Visual Basic 6.0. Este parche puede descargarse desde msdn.microsoft.com El DLL ha sido especialmente diseñado para Visual Basic, por tanto no requiere que el programador declare explícitamente sus funciones y subrutinas. Esto aumenta la sencillez de uso y permite que el programador se concentre exclusivamente en la construcción y depuración del software de control. Guía de Programación en Visual Basic™ 6 Pag.2 QUADRALAB Instalación y Enlace a Proyecto Visual Basic ► Instalación del DLL. El DLL no requiere de un programa especial de instalación. Sólo se requiere copiarlo a la carpeta System, dentro de la carpeta WINDOWS (en Windows™ XP) o dentro de la carpeta WINNT (en Windows™ 2000). Asegúrese de que Visual Basic no está ejecutándose al momento de instalar el DLL. En www.istec.cl/quadralab se encuentra siempre la versión más actual del DLL, que incluye depuración de posibles errores y mejoras. Una vez que el DLL está instalado en la carpeta de sistema, es necesario “enlazarlo” con el proyecto Visual Basic (VB) para poder acceder a todos sus recursos y funciones. A continuación se explica el procedimiento necesario; esto debe realizarse para cada nuevo proyecto VB creado. ► Para enlazar la biblioteca DLL a un proyecto Visual Basic: 1) En el menú Proyecto, hacer click en el ítem Referencias… 2) Seleccionar Quadralab_VB6.dll en la lista de referencias (si no está en la lista, debe localizarse manualmente el DLL con el botón [Examinar] ): C:\WINDOWS\SYSTEM\ En el ejemplo, el DLL se ha instalado en la carpeta de sistema de Windows XP en la unidad C: Guía de Programación en Visual Basic™ 6 Pag.3 QUADRALAB Una vez seleccionada esta referencia, las funciones y subrutinas del DLL estarán disponibles al proyecto Visual Basic sin necesidad de declaraciones u otros pasos. ► Cómo comprobar la instalación y enlazado correcto del DLL. Para comprobar si el DLL está enlazado correctamente, puede llamarse a la función ql_version_dll, que mostrará la versión del DLL de control en una caja de mensajes. ; Ejemplo: Se ha creado un botón de comando llamado command1 en el formulario del proyecto. Haciendo doble clic sobre el mismo, al momento del diseño, se tipea el siguiente código para el botón: Private Sub Command1_Click() ql_version_dll True End Sub Al momento de ejecutar el proyecto y hacer click sobre el botón, debiera aparecer el siguiente mensaje: Cualquier mensaje de error indica que el DLL no está correctamente enlazado al proyecto. Notar que no es requerido llamar a esta función para inicializar al módulo y operarlo; se ha previsto esta función como una manera de verificar la instalación del DLL y la posibilidad de obtener la versión del mismo. Para comprobar el correcto funcionamiento de la comunicación y del módulo, se recurre a las funciones de inicialización, a discutir en la siguiente sección: Referencia de Funciones y Subrutinas. Guía de Programación en Visual Basic™ 6 Pag.4 QUADRALAB Consideraciones Generales Antes de proceder con la referencia completa de procedimientos y funciones disponibles en el DLL, se recomienda estudiar con cuidado la siguiente información: ► Nombres de funciones y procedimientos. Todos los procedimientos y funciones del DLL empiezan con el prefijo ql_, tal como ql_inic() o ql_leer_ent_dig(). Esto permite evitar confusiones de nombres con funciones ya existentes, independientes de QuadraLab. Los nombres están en lenguaje español para facilitar el aprendizaje de los mismos. ► Uso de puerto COMM (RS232) o USB. La biblioteca DLL administra de manera transparente al programador la comunicación, independientemente de si se está usando un puerto COM virtual-USB o un puerto DB-9 físico. Al momento de inicializar el módulo, mediante la función ql_inic(), se especifica al DLL qué puerto COM se utilizará y éste intentará inicializar la comunicación por esa vía. Recuérdese que el control por USB se realiza por medio de un puerto COM virtual; esto se explica en el capítulo de Comunicaciones del Manual de Usuario. No obstante lo anterior, el uso de un puerto COM virtual-USB tiene complicaciones particulares de rendimiento que no son problemas del DLL o del módulo QuadraLab en sí mismo, sino que de la manera en que el hardware USB administra la comunicación. En líneas generales, si se envían demasiadas peticiones secuenciales de lectura o escritura al módulo, el tráfico por USB tenderá a atascarse haciendo el rendimiento del programa VB lento. Para paliar este inconveniente (inexistente cuando se usa un puerto COM RS-232 ‘verdadero’), el DLL ofrece un modo ‘burst’ especial que permite leer el estado de todas las entradas y salidas del módulo con un solo comando, reduciendo así en gran medida el tráfico USB. Esta característica se explica detalladamente en la sección de Referencia de Funciones y Procedimientos. Guía de Programación en Visual Basic™ 6 Pag.5 QUADRALAB No olvidar que es necesario especificar en el mismo módulo QuadraLab explícitamente si el control vía PC será por su puerto USB o RS-232. Para ello, referirse al capítulo de Comunicaciones del Manual de Usuario. ► Valores de retorno de las funciones y condiciones de error. Existen básicamente tres tipos de funciones disponibles en la biblioteca DLL para QuadraLab: • Funciones de lectura • Funciones de escritura • Funciones especiales Las funciones de lectura en su mayoría se refieren a las entradas digitales y análogas del módulo. No obstante, algunas de ellas también leen valores escritos en las salidas e información especial, como nombre del equipo. La mayor parte de las funciones de lectura devuelven valores numéricos iguales o mayores que 0, en formato entero (Integer, 16 bits) o bien formato punto flotante (Single, 32 bits), según el caso. Si hay una condición de error, como un fallo en la comunicación, estas funciones devuelven un -1. Las funciones de escritura, aunque por concepto no leen valores desde el módulo, retornan un tipo boolean (verdadero o falso) para indicar que la operación se realizó en forma correcta. Si no se requiere estricta certeza de que la operación se realizó, entonces puede ignorarse el valor de retorno (False indica error en la operación). Para una mayor sencillez en aplicaciones de laboratorio, es posible “omitir” el valor de retorno y usar estas funciones simplemente como comandos: todo_ok = ql_cambiar_sal_v1(2.5) ‘ejemplo usando valor de retorno, se guarda en la variable tipo boolean todo_ok o bien, ql_cambiar_sal_v1(2.5) ‘ejemplo ignorando el valor de retorno La primera forma se recomienda en aplicaciones donde la seguridad de la conexión sea un Guía de Programación en Visual Basic™ 6 Pag.6 QUADRALAB problema crítico. Notar que la versión simplificada (la de abajo) no lleva paréntesis, esto es por características propias de Visual Basic. Los ejemplos de este manual están dados en esta forma simplificada. La naturaleza de las funciones especiales y sus valores de retorno serán discutidas en detalle según el caso. Se provocará un error al intentar ejecutar funciones de lectura / escritura sin haber inicializado la comunicación con el módulo. Guía de Programación en Visual Basic™ 6 Pag.7 QUADRALAB Tabla Resumen de Funciones y Subrutinas Visual Basic para el módulo QuadraLab, Versión 1.0 Categoría Inicialización y Término Entradas y Salidas Nombre Func / Tipo de Sub retorno Comentarios ql_dll_version Function String Devuelve y/o muestra en pantalla la versión del DLL de control. ql_inic Function Boolean Inicializa el módulo en el puerto COM (virtual USB o físico) especificado. ql_terminar Function Boolean ql_leer_ent_dig Function Byte Devuelve el estado lógico de la entrada digital especificada. ql_leer_ent_v1 ql_leer_ent_v2 Function Single Devuelve la lectura de la entrada de voltaje v1 o v2, en volts. ql_leer_ent_i1 ql_leer_ent_i2 Function Single Devuelve la lectura de la entrada de corriente i1 o i2, en miliamperes. ql_leer_pot_datos Function Single Devuelve la posición absoluta de la perilla Datos del módulo, en %. ql_leer_sal_dig Function Byte Devuelve el estado lógico de la entrada digital especificada. ql_leer_sal_v1 ql_leer_sal_v2 Function Single Devuelve la lectura de la salida de voltaje v1 o v2, en volts. ql_leer_ent_i1 ql_leer_ent_i2 Function Single Devuelve la lectura de la salida de corriente i1 o i2, en miliamperes. Guía de Programación en Visual Basic™ 6 “Cierra” la comunicación y libera al puerto COM usado. Devuelve false si la operación falló. Pag.8 QUADRALAB Entradas y Salidas (cont.) Funciones Especiales ql_cambiar_sal_v1 ql_cambiar_sal_v2 Function Boolean Programa el voltaje especificado en las salidas de voltaje. ql_cambiar_sal_i1 ql_cambiar_sal_i2 Function Boolean Programa la corriente especificado en las salidas de corriente. ql_cambiar_sal_dig Function Boolean Programa la salida digital especificada. ql_set_burst Sub -- ql_leer_burst Function Boolean Sub -- Establece si se mostrarán o no mensajes de error en cajas de mensaje. ql_leer_nombre Function String Retorna el nombre del equipo (12 caracteres) como un string. ql_leer_OS Function String Retorna la Versión de Sistema instalada en el módulo como un string. ql_leer_modelo Function String Retorna el modelo del equipo como un string. ql_set_msg Guía de Programación en Visual Basic™ 6 Permite activar o desactivar el modo burst para lectura de entradas y salidas. Refresca el burst buffer del PC con la información de las entradas y salidas del módulo. Pag.9 QUADRALAB Referencia de Funciones y Subrutinas A. Rutinas de Inicialización y Término Public Function ql_version_dll(msg As Boolean) As String Esta rutina retorna la version del DLL de control instalado en el sistema, lo que puede ser útil en la medida en que nuevas versiones del DLL pueden ofrecer carácterísticas de control adicionales y depuración de errores. Si el argumento msg=True, se muestra una ventana con la información de versión en pantalla. Por ejemplo, al tipear desde Visual Basic: ql_version_dll(True) se muestra una ventana como la siguiente: El valor de retorno corresponde a la versión en forma de String. Por ejemplo, “1.0” o “2.3”. Public Function ql_inic(puerto As Byte) As Boolean Esta rutina es fundamental, por cuanto ejecuta la inicialización del protocolo para utilizar las características del módulo. Ninguna otra función o subrutina relacionada con el módulo responderá si no se ha ejecutado correctamente esta rutina. El argumento puerto corresponde al puerto COM (virtual-USB o RS-232) al que se encuentra conectado la interface. Por ejemplo, para inicializar la interface en el puerto COM3, se tipea lo siguiente: Guía de Programación en Visual Basic™ 6 Pag.10 QUADRALAB ql_inic(3) Con lo que aparece una ventana similar a ésta: La información que aparece en esta ventana es enviada directamente por el microcontrolador del módulo. Se mostrará una ventana con un mensaje de error si no es posible comunicarse con la interface: Esta función retorna True si la inicialización fue exitosa, o False si hubo un error de comunicación u otro tipo. En caso de que la comunicación se haya establecido, el puerto COM utilizado no estará disponible para otras aplicaciones hasta “cerrarlo” como es explica inmediatamente. Condiciones de error comunes son: o Error en el puerto COM: Este mensaje indica que el puerto no pudo abrirse. Ello puede deberse a que es un puerto inexistente, que ha sido ocupado por otra aplicación o o que un puerto COM virtual-USB está mal instalado. Comunicación fallida: Entre las causas posibles están: se intentó inicializar el puerto equivocado, cables dañados o no conectados, o que la comunicación está desactivada en el módulo QuadraLab. Guía de Programación en Visual Basic™ 6 Pag.11 QUADRALAB Durante la fase de inicialización, se envía información importante hacia el PC anfitrión, tal como nombre del equipo (puede cambiarse, hasta 12 caracteres de largo), identificación de manufactura, número de serie, etc. Esta información puede luego leerse usando funciones especiales del DLL. El LED naranjo del módulo se enciende permanentemente cuando la comunicación con PC está inicializada y por tanto disponible para las operaciones de entrada / salida. Public Function ql_terminar() As Boolean Esta función "cierra" el puerto y desconecta al módulo del software anfitrión. Ninguna operación sobre QuadraLab se ejecutará hasta no inicializar la comunicación nuevamente, usando la función ql_inic(). La función retorna True si la operación de "cierre" fue exitosa, o False si hubo un error de comunicación u otro tipo. Esta función debiera ser llamada siempre que se va a descargar el proyecto o formulario que invoca las funciones de QuadraLab. Ejemplo: ql_terminar Nota: Todas las funciones que intenten comunicarse con el módulo mostrarán un mensaje de error en pantalla cuando la comunicación se pierda. Para evitar este mensaje, debe invocarse a la subrutina ql_set_msg(False), con lo que no aparecerán más mensajes en pantalla. Guía de Programación en Visual Basic™ 6 Pag.12 QUADRALAB B. Rutinas de Entradas y Salidas Public Function ql_leer_ent_dig(n as Byte) As Byte Esta función retorna el estado de la entrada digital especificada por n (n es un entero entre 1 y 8). El valor es '0' si la entrada no está conectada a tensión alguna, o '1' si está conectada a una tensión entre 12 y 24V. Si la comunicación con el módulo se ha perdido o no se ha inicializado, el valor de retorno es -1. El siguiente ejemplo controla el estado de un control checkbox llamado "chk_ejemplo" de acuerdo al valor de la entrada DIn2: chk_ejemplo.value = ql_leer_ent_dig(4) En este caso, cuando se conecte tensión a la entrada digital 4, el checkbox mostrará un ticket al ponerse su propiedad value en 1 (que es el valor retornado por ql_leer_ent_dig). Si la tensión leída es 0 V, el ticket no se mostrará al ser su propiedad value=0. Esta función lee la entrada desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el modo está activado, la función retornará el último estado leído con el comando ql_leer_burst(). Public Function ql_leer_ent_v1() As Single Public Function ql_leer_ent_v2() As Single Estas funciones leen el voltaje presente en las entradas de voltaje v1 o v2, respecto a uno de los terminales de tierra G. El valor de retorno es un número en punto flotante (single, 32 bits) entre 0.0 y 5.0 V, usando 10 bits de precisión. Si se desea reducir la cantidad de decimales, puede utilizarse la función round() de Visual Basic. El siguiente ejemplo muestra el voltaje de la entrada 1 (con todos sus decimales) en una etiqueta llamada etiq: etiq.caption = ql_leer_ent_v1() Guía de Programación en Visual Basic™ 6 Pag.13 QUADRALAB ; Estas funciones retornan -1 si ocurrió un error. Esta función lee la entrada desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el modo está activado, la función retornará el último estado leído con el comando ql_leer_burst(). Public Function ql_leer_ent_i1() As Single Public Function ql_leer_ent_i2() As Single Estas funciones leen la corriente presente en las entradas de corriente i1 o i2. El valor de retorno es un número en punto flotante (single, 32 bits) entre 0.0 y 20.0 mA, usando 10 bits de precisión. El siguiente ejemplo muestra la corriente de la entrada 2 en una etiqueta llamada etiq: etiq.caption = ql_leer_ent_i2() ; Estas funciones retornan -1 si ocurrió un error. Esta función lee la entrada desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el modo está activado, la función retornará el último estado leído con el comando ql_leer_burst(). Public Function ql_leer_pot_datos() As Single Esta función retorna la posición absoluta de la perilla de datos. La posición es un número tipo Single entre 0.0% (perilla en tope izquierdo) y 100.0% (perilla en tope derecho) Esta función es útil para variar parámetros en el formulario VB de manera continua, desde el mismo hardware, tal como barras de progreso, deslizadores, etc. El siguiente ejemplo varía una barra de progreso (Progress Bar) llamada progbar. Esta barra tiene sus propiedades min=0 y max=100, respectivamente: ProgBar.Value = ql_leer_pot_datos() Si la comunicación con el módulo se ha perdido o no se ha inicializado, el valor de retorno Guía de Programación en Visual Basic™ 6 Pag.14 QUADRALAB es -1. Esta función lee la salida desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el modo está activado, la función retornará el último estado leído con el comando ql_leer_burst(). Public Function ql_leer_sal_dig(n as Byte) As Byte Esta función retorna el estado de la salida digital especificada por el parámetro n (n es un entero entre 1 y 8). El valor es '0' si la salida está abierta y '1' si está conectada. Si bien parece contradictorio leer una salida, ello tiene sentido por cuanto el modo Monitor o una aplicación corriendo en QuadraLab puede modificar las salidas. Por tanto, esta función permite que el software VB “actualice” su registro de las salidas activas e inactivas. El siguiente ejemplo controla el estado de un control checkbox llamado "chk_ejemplo" de acuerdo al valor de la salida digital 8: chk_ejemplo.value = ql_leer_sal_dig(8) Si la comunicación con el módulo se ha perdido o no se ha inicializado, el valor de retorno es -1. Esta función lee la salida desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el modo está activado, la función retornará el último estado leído con el comando ql_leer_burst(). Public Function ql_leer_sal_v1() As Single Public Function ql_leer_sal_v2() As Single Estas funciones leen el último voltaje ajustado en las salidas v1 o v2, respecto a uno de los terminales de tierra G. El valor de retorno es un número en punto flotante (single, 32 bits) entre 0.0 y 5.0 V, usando 10 bits de precisión. Si bien parece contradictorio leer una salida, ello tiene sentido por cuanto el modo Monitor o una aplicación corriendo en QuadraLab puede modificar las salidas de manera ajena a Guía de Programación en Visual Basic™ 6 Pag.15 QUADRALAB Visual Basic. Por tanto, esta función permite que el software VB “actualice” su registro de las salidas de voltaje. El siguiente ejemplo muestra el voltaje de la salida 1 en una etiqueta llamada etiq: etiq.caption = ql_leer_sal_v1() Una manera simple de comprobar esta función consiste en diseñar un formulario VB donde el valor de una salida sea leído continuamente desde QuadraLab y mostrado en una etiqueta o cuadro de texto. Cuando esta salida sea modificada desde el modo Monitor, este cambio también será mostrado en pantalla de manera inmediata. ; Estas funciones retornan -1 si ocurrió un error. Esta función lee la salida desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el modo está activado, la función retornará el último estado leído con el comando ql_leer_burst(). Public Function ql_leer_sal_v1() As Single Public Function ql_leer_sal_v2() As Single Estas funciones leen el último voltaje ajustado en las salidas v1 o v2, respecto a uno de los terminales de tierra G. El valor de retorno es un número en punto flotante (single, 32 bits) entre 0.0 y 5.0 V, usando 10 bits de precisión. Si bien parece contradictorio leer una salida, ello tiene sentido por cuanto el modo Monitor o una aplicación corriendo en QuadraLab puede modificar las salidas. Por tanto, esta función permite que el software VB “actualice” su registro de las salidas de voltaje. El siguiente ejemplo muestra el voltaje de la salida 1 en una etiqueta llamada etiq: etiq.caption = ql_leer_sal_v1() Una manera simple de comprobar esta función consiste en diseñar un formulario VB donde el valor de una salida sea leído continuamente desde QuadraLab y mostrado en una etiqueta o cuadro de texto. Cuando esta salida sea modificada desde el modo Monitor, este cambio también será mostrado en pantalla de manera inmediata. Guía de Programación en Visual Basic™ 6 Pag.16 QUADRALAB ; Estas funciones retornan -1 si ocurrió un error. Esta función lee la salida desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el modo está activado, la función retornará el último estado leído con el comando ql_leer_burst(). Public Function ql_leer_sal_i1() As Single Public Function ql_leer_sal_i2() As Single Estas funciones leen la corriente presente en las salidas de corriente i1 o i2. El valor de retorno es un número en punto flotante (single, 32 bits) entre 0.0 y 20.0 mA, usando 8 bits de precisión. El siguiente ejemplo muestra la corriente de la salida 1 en una etiqueta llamada etiq: etiq.caption = ql_leer_sal_i1() ; Estas funciones retornan -1 si ocurrió un error. Esta función lee la salida desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el modo está activado, la función retornará el último estado leído con el comando ql_leer_burst(). Guía de Programación en Visual Basic™ 6 Pag.17 QUADRALAB Public Function ql_cambiar_sal_v1(v as Single) As Boolean Public Function ql_cambiar_sal_v2(v as Single) As Boolean Estas funciones programan el voltaje en las salidas v1 o v2. Los valores aceptados estan entre 0.000 y 5.000 volts; valores fuera de este rango serán aproximados al límite más cercano. Por ejemplo, si se intentan colocar -3 V en la salida v1, el equipo colocará 0 V. El siguiente ejemplo establece la salida v2 en 3.14 volts: ql_leer_cambiar_sal_v2(3.14) El valor programado siempre puede revisarse en el modo Monitor. Public Function ql_cambiar_sal_i1(i as Single) As Boolean Public Function ql_cambiar_sal_i2(i as Single) As Boolean Estas funciones programan la corriente en las salidas i1 o i2. Los valores aceptados estan entre 0.0 y 20.0 miliamperes; valores fuera de este rango serán aproximados al límite más cercano. Por ejemplo, si se intentan colocar 100 mA en la salida v1, el equipo colocará 20 mA. El siguiente ejemplo establece la salida i1 en 12.3 mA: ql_leer_cambiar_sal_i1(12.3) El valor programado siempre puede revisarse en el modo Monitor. Guía de Programación en Visual Basic™ 6 Pag.18 QUADRALAB Public Function ql_cambiar_sal_dig(n As Byte, v As Byte) As Boolean Estas función programa una de las 8 salidas digitales al valor especificado: - Si v = 0, entonces la salida es desconectada (circuito abierto) - Si v = 1, entonces la salida es conectada (circuito cerrado). El parámetro n especifica la salida a programar, desde 1 a 8. El siguiente ejemplo conecta la salida digital 3: ql_leer_cambiar_sal_dig(3,1) El siguiente ejemplo desconecta la salida digital 7: ql_leer_cambiar_sal_dig(7,0) El estado es inmediatamente mostrado en los LEDs verdes de las salidas digitales. El valor programado siempre puede revisarse en el modo Monitor. Guía de Programación en Visual Basic™ 6 Pag.19 QUADRALAB Guía de Programación en Visual Basic™ 6 Pag.20 QUADRALAB C. Funciones especiales. Public Sub ql_set_burst(x as Boolean) Nota Este comando y el modo burst tienen sentido cuando se quiere mejorar el rendimiento por puerto virtual USB. Este comando permite establecer de qué forma serán leídas las entradas y salidas del módulo con las funciones correspondientes. Si x=True, se activa el modo burst: todos los valores de entradas y salidas de QuadraLab serán leídos desde el burst buffer en el PC, aumentando de esta forma el rendimiento del modo USB. Ello implica que estos valores deben ser refrescados manualmente con regularidad, usando el comando ql_leer_burst(). Si x=False, se desactiva el modo burst: todos los valores de entradas y salidas de QuadraLab serán leídos usando peticiones de comunicación individuales. En este caso, el tráfico sobre el puerto COM virtual USB puede atascar bastante la aplicación. Este es el modo por defecto cuando se llama al DLL. Como se ha dicho antes, si la aplicación VB está controlando al módulo vía puerto COM RS232 real, el modo burst no aporta grandes beneficios respecto a la complejidad de su uso. Si bien no es recomendado, el modo puede cambiarse “sobre la marcha”, una vez que la aplicación VB está corriendo. Public Function ql_leer_burst() as Boolean Nota Este comando y el modo burst tienen sentido cuando se quiere mejorar el rendimiento por puerto virtual USB. Esta función refresca o actualiza el burst buffer presente en el PC, con la información de todas las entradas y salidas del módulo, de una sola vez. Corresponde a un “muestreo” de estos valores y esto queda presente en memoria, para lectura instantánea de las funciones correspondientes, sin cargar el tráfico USB con excesivas peticiones de lectura individuales. Guía de Programación en Visual Basic™ 6 Pag.21 QUADRALAB Nota Para que las funciones de lectura utilicen esta facilidad, es necesario que el modo burst esté activo. Debe tenerse la precaución de ejecutar esta función cada vez que se quiera leer un nuevo grupo de valores de las entradas y salidas. De otro modo, estas funciones siempre arrojarán el mismo valor “muestreado” anteriormente con ql_leer_burst(). La aparente complicación de este modo queda compensada por la notable mejora en rendimiento en la comunicación USB. Por ejemplo, es posible programar un timer en Visual Basic que ejecute esta función cada 1/50 de segundo. Ello implica que los estados de las entradas y salidas del módulo serán actualizados en el PC cada 20 mS. Entre una actualización y la siguiente, todas las funciones de lectura, como ql_leer_ent_v1 o ql_leer_ent_dig, leerán sus valores desde el buffer del PC y con ello no saturarán el tráfico USB. Public Function ql_leer_nombre() As String Esta función retorna el nombre del equipo (12 caracteres) como un string. El siguiente ejemplo muestra una caja de mensajes con el nombre del equipo: m=msgbox(ql_leer_nombre) Si la comunicación con el módulo se ha perdido o no se ha inicializado, el valor de retorno es “” (string vacio). Public Function ql_leer_OS() As String Esta función retorna la Versión de Sistema instalada en el módulo como un string. El siguiente ejemplo muestra una caja de mensajes con esta información m=msgbox(“Version de Sistema:” + ql_leer_OS) Guía de Programación en Visual Basic™ 6 Pag.22 QUADRALAB Si la comunicación con el módulo se ha perdido o no se ha inicializado, el valor de retorno es “” (string vacio). Public Function ql_leer_modelo() As String Esta función retorna el modelo del equipo como un string. En la presente versión de hardware, todos los módulos corresponden al modelo “QuadraLab”. Si la comunicación con el módulo se ha perdido o no se ha inicializado, el valor de retorno es “” (string vacio). Public Function ql_set_msg(x as Boolean) Este comando determina si se mostrarán mensajes de error en pantalla (vía cajas de mensaje) cuando éstos se produzcan en la operación del módulo. Si x=True, los errores de comunicación serán mostrados en pantalla. Este es el modo por defecto cuando se llama al DLL. Si x=False, no se mostrarán mensajes de error de comunicación. Independientemente de este ajuste, los valores de retorno de error (en la mayor parte de los casos es -1) siempre funcionarán de la misma manera. Guía de Programación en Visual Basic™ 6 Pag.23 QUADRALAB Notas: Innova Service Tecnología www.istec.cl QuadraLab es un producto desarrollado por ISTEC Innova Service Ltda. Sta. Magdalena 75 of. 412, Providencia, Santiago Fono (02)-2444082 Microsoft™, Windows™ y Visual Basic™ son marcas registradas de Microsoft Corporation. Guía de Programación en Visual Basic™ 6 Pag.24