---
title: Referencia de objeto
slug: develop/es/referencia-de-objeto
docTags: 
createdAt: 2025-03-11T07:07:17.199Z
---

Los reproductores BrightSign utilizan una biblioteca estandarizada de objetos BrightScript para exponer funcionalidades para el desarrollo de software. Para publicar una nueva API para interactuar con el hardware de BrightSign, creamos un nuevo objeto BrightScript. 

Las páginas de esta sección proporcionan definiciones para objetos que pueden utilizarse en BrightScript. Se proporciona una breve descripción, una lista de interfaces y las funciones miembro de las interfaces para cada clase de objeto. Aunque la mayoría de los objetos BrightScript tienen páginas independientes, algunos objetos se agrupan en la misma página si están estrechamente relacionados o dependen unos de otros para su funcionalidad.

Aquí se muestra un ejemplo de objetos que se utilizan con frecuencia al crear aplicaciones en BrightScript:

|                                                        |                                                                                                                                                                                                                                                    |
| ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [roVideoMode](docId\:f0DvNrbDpvGOzlRVB29gd)            | Configura la salida de video e interactúa con pantallas utilizando CEC/EDID.                                                                                                                                                                       |
| [roRectangle](docId\:I2OxOXnlwggzmpWraNOQL)            | Se utiliza para definir zonas/widgets en la pantalla. Este objeto se pasa a muchos otros objetos para definir su área de pantalla, incluidos *roVideoPlayer*, *roImagePlayer, roImageWidget*, *roHtmlWidget*, *roClockWidget*, y *roCanvasWidget.* |
| [roVideoPlayer](docId\:OSZbyfPamAsbWnD6w7JSh)          | Reproduce archivos de video, transmisiones y entrada HDMI®.                                                                                                                                                                                        |
| [roImagePlayer](docId\:z65qEZ0xwq9C70OBEgcYI)          | Muestra imágenes.                                                                                                                                                                                                                                  |
| [roHtmlWidget](docId\:g_TJkqqHLcfT4Fw5_Z6T0)           | Muestra contenido HTML local o remoto utilizando el motor de renderizado Chromium.                                                                                                                                                                 |
| [roNetworkConfiguration](docId\:NB5KGuPhYmfJugcnGukRT) | Se utiliza para configurar parámetros de Ethernet, WiFi y red local.                                                                                                                                                                               |
| [roDeviceInfo](docId\:YuDJoiPUdUw_RC3FYb_ZZ)           | Se utiliza para recuperar una amplia variedad de información del sistema, incluidos el tipo de modelo, el número de serie del dispositivo y la versión del firmware.                                                                               |

## Interfaces y métodos

Cada objeto BrightScript consta de una o más "interfaces". Una interfaz consta de uno o más "métodos". Por ejemplo, el objeto *roVideoPlayer* tiene varias interfaces, incluida *ifMessagePort*. La interfaz *ifMessagePort* tiene un método: `SetPort()`. 

La interfaz abstracta *ifMessagePort* está expuesta e implementada tanto por los objetos *roControlPort* como por *roVideoPlayer* . Una vez que se llama al método SetPort(), estos objetos enviarán sus eventos al puerto de mensajes proporcionado. Esto se analiza más detalladamente en la sección Event Loops a continuación.

### Ejemplo

```text
p = CreateObject("roMessagePort")
video = CreateObject("roVideoPlayer") 
gpio = CreateObject("roControlPort", "BrightSign")
gpio.SetPort(p)
video.SetPort(p)  
```

La sintaxis anterior utiliza un atajo proporcionado por el lenguaje: el nombre de la interfaz es opcional, a menos que sea necesario para resolver conflictos de nombres. Por ejemplo, las siguientes dos líneas de código realizan exactamente la misma función:

```text
gpio.SetPort(p)
gpio.ifMessagePort.SetPort(p)
```

Los objetos BrightScript constan *únicamente* de interfaces, y las interfaces definen *únicamente* métodos. No existe el concepto de una "propiedad" o variable en el nivel de objeto o interfaz. Estos deben implementarse como métodos "set" o "get" en una interfaz.

## Clases

Se utiliza un *nombre de clase* para crear un objeto BrightScript. Por ejemplo, el nombre de clase para una instancia de reproducción de video es *roVideoPlayer*, por lo tanto, para inicializar una instancia de reproducción de video, utilizaría código similar al siguiente:

### Ejemplo

```text
video = CreateObject("roVideoPlayer")
```

Tenga en cuenta que "video" puede ser cualquier nombre que siga la sintaxis descrita en la siguiente sección.

## Sintaxis de nombres de objetos y clases

Los nombres de clase tienen las siguientes características:

- Deben comenzar con un carácter alfabético (a – z).
- Pueden constar de caracteres alfabéticos, números o el símbolo "\_" (es decir, guion bajo).
- No distinguen entre mayúsculas y minúsculas.
- Pueden tener cualquier longitud razonable.

## Zonas

Con la función BrightSign Zones, puede dividir la pantalla en rectángulos y reproducir contenido diferente en cada rectángulo.

Dependiendo del modelo BrightSign, las zonas pueden contener video, imágenes, contenido HTML, audio, un reloj o texto. Los modelos 4Kx42, XDx32 y XDx30 pueden mostrar dos zonas de video en pantalla, mientras que los modelos HDx22, HDx20 y LSx22 solo pueden mostrar una. Puede haber múltiples zonas de otros tipos en la pantalla. Una zona de texto puede contener cadenas de texto simples o configurarse para mostrar una fuente RSS en una visualización tipo ticker. 

A partir del firmware 6.0.x, el soporte de zonas está habilitado de forma predeterminada. Cuando las zonas están habilitadas, la capa de imagen está sobre la capa de video de forma predeterminada. El comportamiento predeterminado puede modificarse utilizando el método*roVideoMode.SetGraphicsZOrder()* . 

El soporte de zonas puede deshabilitarse llamando a `EnableZoneSupport(false)`. Cuando las zonas no están habilitadas, la capa de imagen se oculta cada vez que se reproduce video, y la capa de video se oculta cada vez que se reproducen imágenes.

## Bucles de eventos 

Al escribir cualquier cosa más que un script muy simple, será necesario crear un "bucle de eventos". Los bucles de eventos suelen tener la siguiente estructura:

1. Esperar un evento.
2. Procesar el evento.
3. Volver al paso 1.

Un evento puede ser cualquier cantidad de ocurrencias: se ha presionado un botón; se ha activado un temporizador; se ha recibido un mensaje UDP; un video ha terminado de reproducirse; etc. Por convención, el scripting de eventos para objetos BrightScript sigue este flujo de trabajo:

1. El script crea un objeto del tipo *roMessagePort* .
2. Los objetos que pueden enviar eventos (es decir, aquellos que admiten la interfaz *ifMessagePort/ifSetMessagePort* ) reciben instrucciones para enviar sus eventos a este puerto de mensajes utilizando el método `SetPort()` . Puede configurar múltiples puertos de mensajes y hacer que cada evento vaya a su propio puerto de mensajes, pero normalmente es más sencillo crear un puerto de mensajes y hacer que todos los eventos se envíen a este único puerto.
3. El script espera un evento utilizando la instrucción integrada `Wait()` (o el método *ifMessagePort.WaitMessage()* ).
4. Si se asignan múltiples instancias de objetos al mismo puerto de mensajes, el script determina de qué instancia se originó el evento y luego lo procesa. El script vuelve después a la instrucción `Wait()` .

### Ejemplo

```text
'Listens for UDP messages on two different ports and displays the image file requested in the UDP message body.
mp = CreateObject("roMessagePort")

udp1 = CreateObject("roDatagramReceiver", 3000)
udp1.SetPort(mp)
udp1.SetUserData("port 3000")
 
udp2 = CreateObject("roDatagramReceiver", 5000)
udp2.SetPort(mp)
udp2.SetUserData("port 5000")
 
r = CreateObject("rorectangle",0, 0, 1920, 1080)
img = CreateObject("roImagePlayer")
img.SetRectangle(r)

loop:
event = Wait(0, mp)
if type(event) = "roDatagramEvent"
	print "Image play command received on " + event.GetUserData() + "."
	img = DisplayFile("SD:/" + event.GetString())
	endif
endif
goto loop
```

