---
title: BSControlPort
slug: develop/es/bscontrolport
docTags: 
createdAt: 2025-03-11T07:07:17.199Z
---

Este objeto proporciona compatibilidad con las placas de botones USB BP200/BP900 y los puertos GPIO. Las pulsaciones de botones se devuelven como eventos `oncontroldown` y `oncontrolup` . El objeto se utiliza para configurar niveles de salida en el conector de E/S y supervisar entradas. Normalmente, los LED y los botones se conectan al conector GPIO del reproductor BrightSign o del BrightSign Expansion Module.

El equivalente en JavaScript es [puerto de control](docId\:LftxxKmGwnLVQKddmDDqc).

## Creación de objetos

El objeto *roControlPort* se crea con un único parámetro que especifica el puerto que se va a utilizar.

```text
BSControlPort(in DOMString PortName)
```

El parámetro del puerto puede ser uno de los siguientes:

- `BrightSign`: Especifica el conector GPIO integrado (incluido el botón SVC (GPIO12)).
- `Expansor-GPIO`: Especifica el conector DB-25 del BrightSign Expansion Module. Si no hay ningún BrightSign Expansion Module 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 múltiples 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 del BrightSign Expansion Module. Si no hay ningún BrightSign Expansion Module conectado, la creación del objeto fallará y se devolverá Invalid.

:::hint{type="info"}
La conexión en caliente del BrightSign Expansion Module no es compatible.
:::

- `Touchboard-<n>-GPIO`: Recupera eventos de la placa de botones BP200/BP900 especificada. Los eventos se manejan 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 se pueden conectar varias placas de botones BP200/BP900 a un reproductor simultáneamente, el valor \<n> especifica la enumeración de puertos de cada placa. Este valor corresponde al valor `<raw>` o `<fid>` devuelto por el método [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).
:::

## Métodos

:::hint{type="success"}
Consulte la sección Hardware Interfaces para su reproductor en [esta sección](docId\:UYYJYeJ6qoJy1HKSbRlPu) para obtener una tabla de pines y botones correspondientes para el conector GPIO integrado.
:::

- `boolean ConfigurarComoEntrada (unsigned Button)`: Marca el botón especificado como una entrada. Si se pasa un número de botón no válido, se devolverá `falso` . Si la operación se realiza correctamente, la función devuelve `verdadero`. Los botones de entrada están en estado de alta impedancia y pueden activarse externamente en alto o en bajo.
- `boolean ConfigureAsOutput (unsigned Button)`: Marca el botón especificado como una salida. Si se pasa un número de botón no válido, se devolverá `falso` . Si la operación se realiza correctamente, la función devuelve `verdadero`. La salida se activará en alto o en bajo según el estado actual de salida del pin.
- `boolean SetPinValue(unsigned Button, unsigned Output)`: Configura la salida del botón especificado, que puede ser baja (0) o alta (1). Si el botón no está configurado como una salida, el nivel resultante no está definido. Este método también se puede utilizar para configurar el comportamiento de salida LED en [placas de botones BP200/B900](docId:-jdQHtyuE7bPjpvhzg95Q).
- `boolean GetPinValue(unsigned Button)`: Devuelve la salida del botón especificado.
- `void Close(): `Cierra la instancia de *BSControlPort* e impide que continúe consumiendo recursos. Si no se llama a este método, la recolección de basura determina cuándo se destruirá la instancia.
- `boolean SetOutputValue(unsigned Param)`: Especifica el estado deseado de todas las salidas conectadas al puerto de control como bits en un entero. Los botones individuales pueden configurarse mediante operaciones binarias. El parámetro es un entero de 8 bits y cada bit representa una salida.
- `boolean SetOutputValues(unsigned Param1, unsigned Param2, unsigned Param3, unsigned Param4)`: Configura botones en una placa de botones BP200/BP900. Este método solo puede utilizarse cuando el objeto *BSControlPort* se instancia con el parámetro `Touchboard-<n>-LED-SETUP` o `Touchboard-<n>-LED` . Los parámetros son valores enteros.

## Eventos

Los siguientes eventos están disponibles en el objeto *BSControlPort* . Cada evento puede recibir un evento *ControlPortEvent*.

- `oncontroldown`
- `oncontrolup`
- `oncontrolevent`

### ControlPortEvent – Atributos

- `atributo de solo lectura código long sin signo`

## Ejemplos

El siguiente código de ejemplo configura cuatro salidas GPIO:

```text
var gpio = new BSControlPort("BrightSign");
 
// set outputs
gpio.ConfigureAsOutput(0);
gpio.ConfigureAsOutput(1);
gpio.ConfigureAsOutput(2);
gpio.ConfigureAsOutput(3);
 
// set desired states
gpio.SetPinValue(0, 1);
gpio.SetPinValue(1, 1);
gpio.SetPinValue(2, 0);
gpio.SetPinValue(3, 0);
```

El siguiente ejemplo hace que los LED de una placa de botones BP900 parpadeen:

```text
var bp900_gpio;
function myFunction()
{
    var bp900_setup = new BSControlPort("TouchBoard-0-LED-SETUP");
    bp900_setup.SetPinValue(0, 11)

    var bp900 = new BSControlPort("TouchBoard-0-LED");
    bp900.SetPinValue(0, 0x07fe)
    bp900.SetPinValue(1, 0x07fd)
    bp900.SetPinValue(2, 0x07fb)
    bp900.SetPinValue(3, 0x07f7)
    bp900.SetPinValue(4, 0x07ef)
    bp900.SetPinValue(5, 0x07df)
    bp900.SetPinValue(6, 0x07bf)
    bp900.SetPinValue(7, 0x077f)
    bp900.SetPinValue(8, 0x06ff)
    bp900.SetPinValue(9, 0x05ff)
    bp900.SetPinValue(10, 0x03ff)

    bp900_gpio = new BSControlPort("TouchBoard-0-GPIO");
    bp900_gpio.oncontroldown = function(e)
    {
        console.log('###### oncontroldown' + e.code);
    }
}
```

El siguiente ejemplo muestra eventos de una placa expansora GPIO. Tenga en cuenta que usar el objeto equivalente *roGpioControlPort* en BrightScript al mismo tiempo dará como resultado un comportamiento de E/S impredecible.

```text
<html>
    <head>
    <script>
        var bp900_gpio = new BSControlPort("BrightSign");

        bp900_gpio.oncontroldown = function(e){
            console.log('### oncontroldown ' + e.code);
            newtext = " DOWN: " + e.code + "\n";
            document.myform.outputtext.value += newtext;
            document.myform.outputtext.scrollTop = document.myform.outputtext.scrollHeight;
        }

        bp900_gpio.oncontrolup = function(e){
            console.log('### oncontrolup ' + e.code);
            newtext = "   UP: " + e.code + "\n";
            document.myform.outputtext.value += newtext;
            document.myform.outputtext.scrollTop = document.myform.outputtext.scrollHeight;
        }

        bp900_gpio.oncontrolevent = function(e){
            console.log('### oncontrolevent ' + e.code);
            newtext = "EVENT: " + e.code + "\n";
            document.myform.outputtext.value += newtext;
            document.myform.outputtext.scrollTop = document.myform.outputtext.scrollHeight;
        }

        function ledOn(output_index)
        {
            bp900_gpio.ConfigureAsOutput(output_index);
            newtext = "  LED: " + output_index + "\n";
            document.myform.outputtext.value += newtext;
            document.myform.outputtext.scrollTop = document.myform.outputtext.scrollHeight;
        }

        function buttonOn(output_index)
        {
            bp900_gpio.ConfigureAsInput(output_index);
            newtext = "INPUT: " + output_index + "\n";
            document.myform.outputtext.value += newtext;
            document.myform.outputtext.scrollTop = document.myform.outputtext.scrollHeight;
        }
    </script>
    </head>

    <body bgcolor="#E6E6FA">

    <h1>GPIO/Expander Test Page</h1>
    Note this does NOT play well with <em>roGpioControlPort</em>!!<br><br>
    <input type="button" onclick="ledOn(0)" value="led0">
    <input type="button" onclick="ledOn(1)" value="led1">
    <input type="button" onclick="ledOn(2)" value="led2">
    <input type="button" onclick="ledOn(3)" value="led3">
    <input type="button" onclick="ledOn(4)" value="led4">
    <input type="button" onclick="ledOn(5)" value="led5">
    <input type="button" onclick="ledOn(6)" value="led6">
    <input type="button" onclick="ledOn(7)" value="led7">
    <br>
    <input type="button" onclick="buttonOn(0)" value="button0">
    <input type="button" onclick="buttonOn(1)" value="button1">
    <input type="button" onclick="buttonOn(2)" value="button2">
    <input type="button" onclick="buttonOn(3)" value="button3">
    <input type="button" onclick="buttonOn(4)" value="button4">
    <input type="button" onclick="buttonOn(5)" value="button5">
    <input type="button" onclick="buttonOn(6)" value="button6">
    <input type="button" onclick="buttonOn(7)" value="button7">
    <br>

    <form name="myform">
        <textarea readonly rows="50" cols="100" name="outputtext" style="font-family:monospace"></textarea>
    </form>

</body>
</html>
```

