Árbol de Control Avanzado

Q-SYS Control 101 Training (Spanish) : Fundamentos de Scripting

3 ) Comunicación Básica

12m 57s

4 ) Block Controller

0m 0s

6 ) Control de Flujo

33m 58s

7 ) Término del Entrenamiento Control 101

1m 24s

Descripción de la lección

Árbol de Control Avanzado 7m 35s

Explora más de las propiedades de metadatos de los controles disponibles en su Árbol de control.

Transcripción de video

Árbol de Control Avanzado 7m 35s
0:08
Ahora que hemos agregado controles a nuestro ambiente de scripting, veamos algunos de los
0:12
metadata disponibles en el Árbol de Control. En este momento ya te debes estar muy familiarizado
0:18
con .Value, .String y .Position para la mayoría de los controles, así que veamos algunas propiedades
0:25
más. En los videos siguientes, exploraremos como se pueden crear funciones para cambiar cada
0:31
propiedad, pero por ahora, vamos a asegurarnos qué propiedades están a nuestra disposición.
0:38
Primero, hay algunas opciones visuales. .Color, por ejemplo, cambia el color visual principal de un
0:44
control. Lo encontrarás útil para cambiar el color de un fader cuando se aproxima a los límites de su
0:50
rango, por ejemplo, o cuando su canal está muteado.
0:54
La propiedad .Color puede ser representada por códigos de color en hexadecimal, al igual que los
1:00
nombres de color en HTML.
1:02
En el Block Controller, puedes usar esta propiedad con el Bloque “Set Control Visual”. Si no te gusta
1:08
ninguno de estos 70 colores, puedes seleccionar uno diferente aquí en la categoría de Values.
1:14
Y si vemos en el Lua generado por este Block Controller, veremos que solamente asigna un valor al
1:19
Árbol de control de .Color
1:22
La propiedad .Legend se refiere a la etiqueta del control. Esto es diferente al nombre que le das
1:28
cuando creas el control, “Kevin”, el cual no puede cambiarse en el script.
1:33
El Legend (etiqueta) es lo mismo que escribir sobre un control para renómbralo, y como puedes
1:39
cambiar la inscripción de manera dinámica con un script, esta es una gran forma de cambiar la
1:43
etiqueta del botón basados en su estatus.
1:46
En el Block Controller, encontrarás esto representado por otro bloque “Set Control Visual”. Estos
1:52
bloques “Set Control Visual” son todos el mismo bloque con un elemento visual pre seleccionado, así
1:58
que solo cambia este menú desplegable para cambiar su objetivo.
2:03
Ya que estamos aquí, veamos algunas propiedades más. .IsInvisible es una propiedad que puede
2:09
colocarse ya sea “true” o “false” para hacer un control invisible o visible de nueva cuenta. Puedes
2:15
usar esto, por ejemplo, para ocultar ciertos controles del teléfono en una UCI cuando el teléfono está
2:21
en uso.
2:22
De manera similar, la opción visual .IsDisabled hará que un control se ponga semi transparente y que
2:29
no podamos interactuar con él. Esto permite que el usuario sepa que no puede activar ese control en
2:35
ese estado particular.
2:37
La propiedad. IsIndeterminate es otro ejemplo de un botón deshabilitado, aunque es menos probable
2:43
que apliques este estado en un control ya que debes leer esta propiedad de un control.
2:48
Cuando un dispositivo periférico no está conectado a la red, por ejemplo, sus controles toman este
2:53
color rojo difuminado, lo cual es el resultado de estar Indeterminado. Significa que el sistema no
2:59
puede determinar la conexión entre este control y su dispositivo asociado, y, por lo tanto, es
3:05
indeterminado.
3:07
Digamos que estás monitoreando un contacto seco de una alarma contra incendios en un IO Frame -
3:13
puedes monitorear tanto el Value para cualquier señal de una alarma, como también su propiedad
3:17
.IsIndeterminate. Cuando esta propiedad se hace verdadera, entonces sabrás que ya no tienes
3:24
conexión con ese dispositivo, lo que significa que tu sistema de alarmas no funcionará.
3:29
Fíjate que una Perilla tiene sus propiedades .Value, .String y .Position disponibles aquí en el Block
3:36
Controller, pero un botón Toggle tiene algo diferente – tiene una propiedad llamada .Boolean. Para
3:42
un control que solo tiene dos estados como un botón binario, .Boolean representa esencialmente su
3:48
Valor.
3:49
Cuando se refiere a sí mismo, Boolean se asume como verdadero, pero puedes cambiar Boolean a
3:55
falso para desactivar el control. En un Script de Lua, sin embargo, puedes referenciar la propiedad
4:01
.Boolean de un botón al igual que sus propiedades .Value, .String o .Position.
4:07
Para controles de entrada, hay una propiedad muy importante en árbol de control y que veremos
4:13
mucho en los siguientes videos: .EventHander.
4:17
En un mundo lleno de eventos, alguien tiene que hacerse cargo de ellos “Consideralo… hecho”
4:25
El EventHandler de un control es disparado cuando el estado de ese control cambia. Básicamente es
4:32
el indicador de que algo ha ocurrido, lo cual puedes usar para iniciar una acción. Esto solo tiene
4:38
sentido como entrada en árbol de control – y lo usaremos mucho cuando comencemos a escribir
4:44
funciones.
4:45
Si deseas que algo suceda cuando se presiona un botón, entonces usas el .EventHandler para hacer
4:51
que eso suceda. En el Block Controller, esto se representa con este bloque de “On Control Change”
4:58
(cuando cambia el control), el cual – si vemos el Lua que se genera – es el comienzo de una función,
5:04
iniciada por nuestro buen amigo el EventHandler.
5:08
Algunos tipos de controles tiene la propiedad .Values – Así en plural, Values, lo que es diferente al
5:16
.Value. Por ejemplo, un medidor puede entregar tanto el valor pico como el valor promedio como un
5:23
arreglo usando esto. También está la propiedad .Choices para controles con menús desplegables de
5:30
selección.
5:31
Par acontroles de Salida, puedes usar la propiedad .RampTime para establecer un intervalo de tiempo
5:37
en el que el control cambia de un valor a otro, así que la próxima ves que coloques la propiedad .
5:43
Value o .Position de un control, puedes establecer este tiempo para llegar ahí. La propiedad
5:49
.RampTime se expresa en segundos.
5:52
Finalmente, veamos los botones de Trigger. Hemos dicho algunas veces que los triggers son únicos
5:58
debido a que no tienen Value, String o Position. Normalmente puedes cambiar el estado de un
6:04
control ajustando estas propiedades, pero para un trigger, necesitamos hacer esto: Control:Trigger().
6:13
Fíjate que usé dos puntos en lugar de un punto. Los dos puntos indican un método, en lugar de una
6:20
propiedad. Un método es una acción que puede realizar un control. No tienes que poner el :Trigger a
6:28
verdadero o falso, solo necesitas los dos puntos para activar este método.
6:33
Hay algunos métodos en el árbol de control que encontrarás para ciertos controles. Los verás cuando
6:39
comiences a lidiar con Timers, los cuales tiene métodos :Start y :Stop, o conexiones TCP que tienen
6:47
métodos como :Connect, :Disconnect, etc.
6:52
No entraremos en la creación de conexiones TCP en Lua en este entrenamiento en línea, debido a
6:58
que es mucho más fácil usar el Block Controller para enviar y recibir cadenas a través de la red. Y si
7:03
quieres activar un Trigger en el block controller, encontrarás un bloque específico para ese control el
7:09
cual activa su método.
7:11
Ok, hemos ido tan lejos como necesitamos en el Árbol de Control por ahora, así que regresemos a
7:17
nuestra hoja de trabajo. No hay un ejercicio para esta sección, solo una demostración de algunas de
7:22
estas propiedades. Échale un vistazo y continua, ya que, lo que sigue es crear algunas funciones,
7:28
¡para que tu script pueda hacer algo! Continua cuando estés listo.