---
title: controlport
slug: develop/es/controlport
docTags: 
createdAt: 2025-03-11T07:07:19.526Z
---

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**

```text
    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()`:

```javascript
let control_port_class = require("@brightsign/legacy/controlport")
let control_port = new control_port_class("TouchBoard-0-GPIO");
```

El objeto c*ontrolport* 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](https://www.brightsign.biz/digital-signage-products/accessories/USB-C-Cables) 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.

:::hint{type="info"}
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()](docId\:YuDJoiPUdUw_RC3FYb_ZZ). 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()

```javascript
bool SetOutputValue(unsigned param)
```

Especifica el estado deseado de todas las salidas conectadas al puerto de control como bits en un entero. 

### SetOutputValues()

```javascript
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 c*ontrolport* se instancia con el parámetro `Touchboard-<n>-LED-SETUP` o  `Touchboard-<n>-LED` . Consulte [Configuración de BP200/BP900](docId:-jdQHtyuE7bPjpvhzg95Q) para obtener más detalles.

Los parámetros son valores enteros.

### SetPinValue()

```javascript
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](docId:-jdQHtyuE7bPjpvhzg95Q). 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()

```javascript
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()

```javascript
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](docId\:UYYJYeJ6qoJy1HKSbRlPu) para obtener una tabla de pines y botones correspondientes para el conector GPIO integrado.

### Close()

```javascript
void Close()
```

Cierra la instancia de c*ontrolport*

## Eventos

Use [agregarEventListener](docId\:PqIIPi27TFcO3ZuvJmnyX) 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:

```javascript
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);
```

