controlport
Este objeto controlport se utiliza para configurar niveles de salida en el conector de E/S y supervisar entradas, y proporciona soporte para las placas de botones USB BP200/BP900 y los puertos GPIO. Normalmente, los LED y botones se conectan al conector GPIO en el reproductor BrightSign o en el BrightSign Expansion Module.
IDL de controlport
Constructor(String port)
] interface ControlPort {
bool SetOutputValue(unsigned param);
bool SetOutputValues(unsigned p1, unsigned p2, unsigned p3, unsigned p4);
bool SetPinValue(unsigned pin, unsigned param);
bool GetPinValue(unsigned pin);
bool ConfigureAsInput(unsigned pin);
bool ConfigureAsOutput(unsigned pin);
void Close()
};Creación de objetos
Para crear un objeto controlport , utilice el método require():
let control_port_class = require("@brightsign/legacy/controlport")
let control_port = new control_port_class("TouchBoard-0-GPIO");El objeto controlport se crea con un parámetro que especifica el puerto que se está utilizando (TouchBoard-0-GPIO en el ejemplo anterior). El parámetro de puerto puede ser uno de los siguientes:
- BrightSign: Especifica el conector GPIO integrado (incluido el botón SVC (GPIO12)).
- Expander-GPIO: Especifica el conector DB-25 en el BrightSign Expansion Module. Si no hay un módulo BrightSign Expansion conectado, la creación del objeto fallará y se devolverá Invalid.
- Expansor-<n>-GPIO: Especifica un dispositivo USB-to-GPIO conectado al reproductor. Se pueden controlar varios dispositivos USB-to-GPIO utilizando instancias separadas de roControlPort : El primer dispositivo corresponde a "Expander-0-GPIO", el segundo a "Expander-1-GPIO", etc.
- Expander-DIP: Especifica los ocho interruptores DIP en el BrightSign Expansion Module. Si no hay un módulo BrightSign Expansion conectado, la creación del objeto fallará y se devolverá Inválido. Tenga en cuenta que no se admite la conexión en caliente del BrightSign Expansion Module.
- Touchboard-<n>-GPIO: Recupera eventos de la placa de botones BP200/BP900 especificada. Los eventos se gestionan de la misma manera que los eventos del puerto BrightSign.
- Touchboard-<n>-LED-SETUP: Configura varias opciones de salida LED para la placa de botones BP200/BP900 especificada.
- Touchboard-<n>-LED: Configura los bits para cada botón en la placa de botones BP200/BP900 especificada. Los bits indican si el LED asociado debe estar encendido o apagado.
Dado que varias placas de botones BP200/BP900 pueden conectarse a un reproductor simultáneamente, el valor <n> especifica la enumeración de puerto de cada placa. El orden de varias placas conectadas depende del orden en que aparecen en la estructura de datos devuelta por roDeviceInfo.GetUSBTopology()roDeviceInfo.GetUSBTopology(). Un valor de enumeración no especificado es sinónimo de una placa de botones con un valor de enumeración de 0 (por ejemplo, Touchboard-GPIO y Touchboard-0-GPIO son idénticos).
ControlPort
SetOutputValue()
bool SetOutputValue(unsigned param)Especifica el estado deseado de todas las salidas conectadas al puerto de control como bits en un entero.
SetOutputValues()
bool SetOutputValues(unsigned p1, unsigned p2, unsigned p3, unsigned p4)Configura botones en una placa de botones BP200/BP900. Este método solo puede utilizarse cuando el objeto controlport se instancia con el parámetro Touchboard-<n>-LED-SETUP o Touchboard-<n>-LED . Consulte Configuración de BP200/BP900 para obtener más detalles.
Los parámetros son valores enteros.
SetPinValue()
bool SetPinValue(unsigned pin, unsigned param)Devuelve un bool y configura uno de los siguientes:
- La salida del botón GPIO especificado y el valor (0 o 1). Si el botón no está configurado como salida, el nivel resultante es indefinido. Por ejemplo, SetPinValue(0,1), SetPinValue(1,1), SetPinValue(2,1), SetPinValue(3,1) ... etc ...
- El comportamiento de salida del LED en Placas de botones BP200/BP900. En este caso, el desplazamiento es el valor del pin y la máscara de bits es el parámetro unsigned.
bool GetPinValue()
Devuelve verdadero si el pin de entrada especificado está activo (bajo). Devuelve falso si el pin está inactivo (no conectado o alto).
bool ConfigureAsInput()
bool ConfigureAsInput(unsigned pin)Marca el botón especificado como una entrada. Si se pasa un número de botón no válido, falso será devuelto. Si la operación se realiza correctamente, la función devuelve verdadero. Los botones de entrada están en estado tri-state y pueden ser controlados externamente en alto o en bajo.
bool ConfigureAsOutput()
bool ConfigureAsOutput(unsigned pin)Marca el botón especificado como una salida. Si se pasa un número de botón no válido, falso será devuelto. Si la operación se realiza correctamente, la función devuelve verdadero. La salida se establecerá en alto o en bajo según el estado de salida actual del pin. Consulte la sección Hardware Interfaces para su reproductor en el espacio Hardware para obtener una tabla de pines y botones correspondientes para el conector GPIO integrado.
Close()
void Close()Cierra la instancia de controlport
Eventos
Use agregarEventListeneraddEventListener para escuchar controldown, controlup y controlevent, que se definen de la siguiente manera:
- controldown indica que un botón/puerto ha sido presionado
- controlup indica que un botón/puerto ha sido liberado
- controlevent es un evento que entrega cambios de estado de entrada que pueden no clasificarse como down o up (por ejemplo, el cambio sin procesar del estado de un pin o un evento de botón de hardware que no se asigna claramente a una pulsación simple)
Ejemplo
Este script de ejemplo configura un BP900 para que “parpadee” apagando cada LED de botón en un punto diferente del ciclo:
const control_port_class = require('@brightsign/legacy/controlport');
const led = new control_port_class("TouchBoard-0-LED");
const led_setup = new control_port_class("TouchBoard-0-LED-SETUP");
led_setup.SetPinValue(0, 0x000B00A0);
led.SetPinValue(0, 0x07fe);
led.SetPinValue(1, 0x07fd);
led.SetPinValue(2, 0x07fb);
led.SetPinValue(3, 0x07f7);
led.SetPinValue(4, 0x07ef);
led.SetPinValue(5, 0x07df);
led.SetPinValue(6, 0x07bf);
led.SetPinValue(7, 0x077f);
led.SetPinValue(8, 0x06ff);
led.SetPinValue(9, 0x05ff);
led.SetPinValue(10, 0x03ff);