miércoles, 24 de junio de 2009

Opciones de compilación de LabWindows/CVI

imageLas opciones de compilación son, muchas veses, un poco olvidadas durante el desarrollo de un programa, aunque son, como el código, muy importantes por las razones siguientes: permiten de configurar el nivel de análisis para la detecciones de errores del código y de la gestión de la memoria durante la ejecución en modo "debug", fijan las direcciones de memoria para la compatibilidad con otros componentes, como DLL. Así, la modificación de una opción puede cambiar, hasta no desplegar los mensajes de error del debugger de LabWindows/CVI. Tendríamos un comportamiento inestable de nuestro programa sin haber tenido advertencias durante la compilación o la ejecución en modo "debug". Al fin de ayudar ustedes durante sus inicios con LabWindows/CVI, le propone de configurar los "Build Options" del menú "Options" de la manera que sigue (captura de la pantalla de Build Options de LabWindows/CVI 9.0, la versiones anteriores tienen mas o menos las mismas opciones).

Build Options LabWindows/CVI 9.0

Descubra cómo AJOLLY Testing puede aportar valor a sus proyectos:
🌐 www.ajolly.com.mx

lunes, 22 de junio de 2009

Estructuracion del diagrama LabVIEW

labview_thumb Se puede definir un código bueno en LabVIEW con varias características: antes de todo debe funcionar, fácil de leer y fácil de modificar para melojar su mantenimiento. Así pues, se buscara a estructurar el código y no  lanzar en el diagrama sus ideas.

 

image En este fin, usáramos  las funciones de estructuras como las bucles FOR o WHILE, les condiciones, la estructura de eventos (para maneja las acciones de los elementos del interface gráfico como un clic en un botón) o las secuencias sin olvidar las decoraciones como los cuadros y textos para agregar comentarios. Pero también los sub-VI los cuales agrupen funciones, eso reducirá los diagramas, capitalizara las funcionalidades y sera mas fácil de distribuir esas funciones; ademas, eso permite al motor de LabVIEW una mejor gestión de la memoria durante la ejecución del programa.

Descubra cómo AJOLLY Testing puede aportar valor a sus proyectos:
🌐 www.ajolly.com.mx

martes, 3 de marzo de 2009

Historico de la versiones de LabWindows/CVI

cvi Con la misma idea que para el historial de la versiones de LabVIEW, hago en Wikipedia el historial de las versiones de LabWindows/CVI (ver el articulo aqui):

 

  • 1989: LabWindows 1.0, bajo DOS, primera versión pública
  • 1991: LabWindows 2.0, bajo DOS, ayuda al desarrollo de interfaces gráficas de usuario
  • 1994: LabWindows/CVI 3.0, bajo Windows 3.1 y Solaris
  • 1995: LabWindows/CVI 3.1, generación automática de código
  • 1996: LabWindows/CVI 4.0, mayor compatibilidad con los compiladores externos (Microsoft, Borland, Watcom y Symantec)
  • 1998: LabWindows/CVI 5.0, compatibilidad VXI e IVI
  • 2000: LabWindows/CVI 5.5, librarías de funciones multitarea
  • 2001: LabWindows/CVI 6.0, ActiveX y mejora de la interfaz gráfica de usuario
  • 2003: LabWindows/CVI 7.0, integración de los workspaces
  • 2004: LabWindows/CVI 7.1, terminación automática
  • 2005: LabWindows/CVI 8.0, nuevo sistema de despliegue, .NET assemblies
  • 2006: LabWindows/CVI 8.1, variables de red, controles gráficos del estilo Windows
  • 2007: LabWindows/CVI 8.5, mejora de la gestión del microprocesador multi corazón, edición del código durante el debug, toolkit tiempo real
  • 2008: LabWindows/CVI 9.0, gestor de memoria y compilación optimizada, C ANSI versión 99 (en particular, las array dinámicas)
Descubra cómo AJOLLY Testing puede aportar valor a sus proyectos:
🌐 www.ajolly.com.mx

Historial de las versiones de LabVIEW

labview Estoy haciendo el historial de la versiones de LabVIEW en Wikipedia (da un clic aqui para ver el articulo en Wikipedia):

 

  • 1986 : LabVIEW 1.0, primera versión en Mac OS
  • 1990 : LabVIEW 2.0, máximo aprovechamiento de los resultados
  • 1992 : LabVIEW 2.5, primera versión en Windows 3.1 et Solaris
  • 1993 : LabVIEW 3.0
  • 1994 : LabVIEW 3.0.1, primera versión en Windows NT
  • 1994 : LabVIEW 3.1
  • 1995 : LabVIEW 3.1.1, integración del Application Builder
  • 1996 : LabVIEW 4.0
  • 1997 : LabVIEW 4.1
  • 1998 : LabVIEW 5.0, multitarea, contenedores ActiveX, asistente para la adquisición de dato (tarjetas (DAQ) et asistente para el control de instrumentos; primera versión en Linux
  • 1999 : LabVIEW 5.1, primera versión para Linux, primera versión de LabVIEW RT (Real Time)
  • 2000 : LabVIEW 6.0, controles gráficos en 3D, referencias de controles
  • 2001 : LabVIEW 6.1, mejoramiento y correcciones
  • 2003 : LabVIEW 7.0, VI Express
  • 2004 : LabVIEW 7.1, traducción en francés, alemán et japones
  • 2005 : LabVIEW 8.0, Project Explorer, XControls, shared variables
  • 2005 : LabVIEW 8.1, mejoramiento y correcciones
  • 2006 : LabVIEW 8.20, Programación orientada a objetos
  • 2007 : LabVIEW 8.5, primera version del toolkit FPGA et del toolkit Statechart
  • 2008 : LabVIEW 8.6, limpieza automática de los diagramas

Me falta todavia datos para algunas versiones pero en eso trabajo y todas informaciones son las bienvenudas.

Descubra cómo AJOLLY Testing puede aportar valor a sus proyectos:
🌐 www.ajolly.com.mx

miércoles, 11 de febrero de 2009

La programación orientada objetos con LabVIEW

labview¿Sabía que desde la versión 8.20 de LabVIEW, que salió en 2006, es posible programar con una arquitectura objeto? Se pueden así crear clases con sus propiedades y sus métodos, como en C++, Java, C#, pascal object (Delphi) y otros lenguajes evolucionados.Oigo algunos de ustedes decir "pero que eso nos aporta para el desarrollo de programas informáticos de prueba, medida y control? ". Bien es cierto que para un pequeño programa informático que hace una medida o varias medidas y un tratamiento simple, el lenguaje objetos no es el mejor… ¿seguro? se piensa siempre desarrollar el programa en "one shot" y se da muy a menudo cuenta, más tarde, que es necesario hacer evolucionar el programa informático y/o recuperar una funcionalidad para integrarla en otro programa. Aquí se puede decir que la programación objeto (LVOOP en LabVIEW para LabView Oriented-Object Programming) tiene todo su interés: permite un concepto y una arquitectura más cerca del mundo físico y en consecuencia al razonamiento humano (ejemplo de asunto: un coche con sus métodos, volver, frenar, y sus propiedades, velocidad máxima, color). demás, se pueden entonces aprovechar las herramientas de modelización que permiten concebir en forma de esquemas semiformales la estructura del programa, basado por ejemplo en UML (existe un toolkit que permite eso en LabVIEW).

Descubra cómo AJOLLY Testing puede aportar valor a sus proyectos:
🌐 www.ajolly.com.mx

miércoles, 21 de enero de 2009

Wikipedia y la prueba, medida y control


Desde 2006 contribuyo en algunos artículos en la enciclopedia libre Wikipedia, maravillosa herramienta del conocimiento (puede ver mi perfil en Wikipedia aquí: http://es.wikipedia.org/wiki/Usuario:Adrienj). Comencé redactando artículos sobre la historia y la cultura del norte de México. Pero, desde hace algún tiempo, participo, cuando tengo tiempo, agregando artículos relativos a la prueba, la medida, el control y sus distintas herramientas. Si desea participar en este esfuerzo, que no tiene más nobleza que de compartir el conocimiento, entonces no hay nada más simple que crear una cuenta en Wikipedia.
Creé varios artículos como LabWindows/CVI, TestStand, Measurement Studio o modifiqué LabVIEW... pero muchas cosas quedan por completar y muchas otras definiciones no forman aún parte de la enciclopedia: ¡a sus teclados!

Descubra cómo AJOLLY Testing puede aportar valor a sus proyectos:
🌐 www.ajolly.com.mx

domingo, 11 de enero de 2009

LabWindows/CVI 9.0 : variable-length arrays


Con la puesta en práctica de la norma C99, un avance se hace en cuanto a la gestión de la memoria: la declaración de array dinámica (variable-length arrays in english).

Me dirá, conozco la array, declaro una array de diez totalidades calculando las dimensiones con una constante del siguiente modo: int iArray [10]. Las array dinámicas, ok conozco, declaro a un indicador luego yo hago un malloc o calloc para calcularla las dimensiones con una variable, en no olvidando liberar la memoria asignada con un free al final del tratamiento.

¿Entonces que son las variable-length arrays? Es la posibilidad de declarar array indicando dimensiones con variables y no solamente con constantes. A continuación, dos ejemplos para ilustrar la utilización de una array dinámica: se pide al usuario calcular las dimensiones de una array que él mismo asignará, luego se indica el contenido de esa array.

ANTES
int iRows, iCols;
int i, j;
int *piArray = NULL;

printf("Número de líneas: ");
scanf("%d", &iRows);
printf("Número de columnas: ");
scanf("%d", &iCols);

*piArray = (int*)malloc(iRows*iCols*sizeof(int));
if (piArray != NULL)
{
__for (int i = 0; i < iRows;i++)
__{
____for (int j = 0; j
____{
______piArray [i][j] = i*iCols+ j;
______printf("%d ", piArray [i][j]);
____}
____printf("\n");
__}
}
free(piArray );
piArray = NULL;


AHORA
En el código siguiente, se utiliza también otra novedad del C99: la declaración de las variables no será ya al principio de los bloques {}.

int iRows, iCols;
int i, j;

printf("Número de líneas: ");
scanf("%d", &iRows);
printf("Número de columnas: ");
scanf("%d", &iCols);

int tiArray [iRows][iCols];
for (int i = 0; i < iRows; ++i)
{
__for (int j = 0; j < iCols; ++j)
__{
____tiArray[i][j] = i*iCols+ j;
____printf("%d ", tiArray[i][j]);
__}
__printf("\n");
}


Aquí, la liberación de la memoria asignada a tiArray se efectúa al final de "vida" de esta variable. Como tiArray es una variable local, es liberada al final del tratamiento de la función en la cual se declara.

Descubra cómo AJOLLY Testing puede aportar valor a sus proyectos:
🌐 www.ajolly.com.mx

viernes, 9 de enero de 2009

Que hay de nuevo en LabWindows/CVI 9.0 : el estándar C99


Muchas novedades están disponibles en LabWindows/CVI 9.0 sobre todo con la puesta en práctica de la última norma del lenguaje C: el C99. Pues se habrán esperado diez años, el tiempo de maduración, para beneficiarse de las ventajas de esta nueva norma.

¿Que aporta el C99?

Ahí tienes la lista de estas mejoras:
* La declaración de las variables no será ya al principio de los bloques {}.
* Se pueden declarar array indicando dimensiones con variables y no solamente con constantes.
* Cada elemento de la array, estructuras y uniones son ahora inicializable distinta y especialmente.
* Los elementos de las array, estructuras y uniones podrán iniciarse con variables.
* Nuevo tipo: las totalidades de 64 bits (long long).
* Nuevas funciones snprintf y vsnprintf que son versiones "aseguradas" de sprintf et vsprintf evitan los rebasamientos controlando el tamaño de la cadena de entrada.
* Los macros a N argumentos (...).
* Adición de la variable del precompilador __func__ que contiene el nombre de la función corriente.

Observo que esta última novedad (__func__) del C99 estaba ya presente desde hace algunas versiones de CVI.

Enumeraré en artículos dedicados a cada aspecto del C99 para LabWindows/CVI.

Descubra cómo AJOLLY Testing puede aportar valor a sus proyectos:
🌐 www.ajolly.com.mx