From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



Elementos de la Lista de Constantes de Combo Box/Ring no se Actualizan Desde el Type Definition



Software Primario:
Versión de Software Primario: 1.0
Versión de Software Primario Corregido: N/A
Software Secundario: LabVIEW Development Systems>>LabVIEW Base Package, LabVIEW Development Systems>>LabVIEW Professional Development System

Problema: En LabVIEW, tengo un type definition que incluye un control de combo box/ring y he creado una constante a partir de este type definition en el diagrama de bloques de un VI. Si después regreso al type definition y edito la lista de elementos del combo box/ring, LabVIEW no actualiza automáticamente la constante a la que está ligado. No hay diferencia si cambio a un strict type definition. Además, el dar clic derecho sobre la constante y seleccionar Update from Type Def. no tiene ningun efecto. ¿Por qué sucede esto y cómo puedo lograr que las listas de elementos de mis constantes se actualicen automáticamente desde sus type definitions?

Solución: El comportamiento descrito es esperado. Para poder explicar las cosas, el primer aspecto que se debe tener presente es que las constantes del diagrama de bloques no pueden ser strict type definitions. Cuando una constante está ligada a un strict type definition, simplemente se cambia a un type definition normal. Por lo tanto, la pregunta se reduce a por qué los elementos en un combo box/ring no se actualizan con un type definition.

La funcionalidad básica de un type definition de combo boxes y rings puede ser descrita citando la descripción del type definition que se encuentra en la documentación de la ayuda de LabVIEW:

"Debido a que los type definitions identifican solamente el tipo de dato, sólo los valores que son parte de un tipo de dato se actualizan... Debido a que los nombres de elementos en un control del tipo ring o combo box no definen el tipo de dato, cambios a estos en el type definition no cambiaran los nombres de los elementos en instancias del type definition."
La mejor manera de ilustrar este concepto es abrir la ventana de Context Help en LabVIEW. Se hace desde el menú Help»Show Context Help y revisar el tipo de dato del cable que sale del control de combo box/ring en el diagrama de bloques. El tipo de dato es un string normal (a diferencia de algun tipo de dato especial de combo box), por lo tanto, los elementos del combo box de type definition no se actualizan cuando son cambiados porque no tienen nada que ver con el tipo de dato. En contraste, los enums, que son similares en funcionamiento a un combo box o un ring, tienen su propio tipo de dato (enum) en el diagrama de bloques. Esto se puede verificar al revisar el tipo de dato asociado al cable en el diagrama de bloques. Por esta razón, los enums si actualizan sus elementos cuando se modifica el type definition.

Con todo lo anterior dicho, para tener constantes que se actualicen con el type definition, se tienen que usar enums en lugar de combo boxes/rings. Tienen su propio tipo de dato, lo que los hace mucho más versátiles en cuanto a cómo leer sus valores en el diagrama de bloques. Para acceder al elemento seleccionado en el diagrama de bloques (tal como un combo box lo devolvería), simplemente es necesario cablear la terminal del enum a la entrada de la función Format Into String y el nombre del elemento será devuelto automáticamente. 

Ligas Relacionadas:
KnowledgeBase 2QU94J6I: What is the Difference Between Type Definitions and Strict Type Definitions?