---
title: roBtManager
slug: develop/es/robtmanager
docTags: 
createdAt: 2025-03-11T07:07:18.731Z
---

Este objeto facilita la comunicación BLE unidireccional (es decir, "beaconing"): use el objeto *roBtManager* para detectar si hay adaptadores BLE presentes y para enviar anuncios BLE usando los adaptadores.

El equivalente en JavaScript es [Administrador BSBt](docId\:FfkcB-a73CTmwBVDulq-l).

## ifMessagePort

### SetPort(port As roMessagePort)

Publica mensajes de tipo *roBtEvent* en el puerto de mensajes adjunto. Use estos mensajes para detectar la inserción o eliminación de adaptadores Bluetooth.

## ifUserData

### SetUserData(user\_data As Object)

Establece los datos de usuario que se devolverán cuando se generen eventos.

### GetUserData() As Object

Recupera un objeto arbitrario establecido mediante el método `SetUserData()` .

## ifIdentity

### GetIdentity() As Integer

Devuelve un número único que puede usarse para identificar eventos que se originan en la instancia del objeto.

:::hint{type="info"}
La interfaz *ifIdentity* ha quedado obsoleta. Recomendamos usar la interfaz *ifUserData* en su lugar.
:::

## ifBtPeripheralManager

### GetFailureReason() As String

Devuelve información de diagnóstico adicional si un método devuelve `Falso`.

### GetAdapterList() As roArray

Devuelve un arreglo que describe todos los adaptadores Bluetooth disponibles. Cada entrada del arreglo consiste en un arreglo asociativo que contiene propiedades del adaptador. Actualmente, cada arreglo asociativo contiene una sola propiedad `nombre` que describe el nombre del adaptador. Use este método para determinar si hay adaptadores Bluetooth conectados al reproductor.

Disponible a partir de BOS 9.0.198 y 9.1.21, este endpoint incluye un campo booleano en el arreglo devuelto de elementos del adaptador que indica si el dispositivo está encendido o apagado.

### StopAdvertising() As Boolean

Detiene todos los anuncios BLE. Este método devuelve `Verdadero` en caso de éxito y `Falso` en caso de fallo.

### GetAdvertisingList() As roArray

Devuelve un arreglo que describe todos los anuncios Bluetooth activos. Cada entrada del arreglo consiste en un arreglo asociativo que describe un solo anuncio. Los valores del arreglo asociativo corresponden a las propiedades establecidas usando el método `StartAdvertising()` , pero también pueden incluir valores de parámetros predeterminados que no se establecieron explícitamente. Tenga en cuenta que todos los valores UUID se devolverán en minúsculas.

### StartAdvertising(data As roAssociativeArray) As Boolean

Comienza a transmitir un mensaje BLE "beacon". Este método devuelve `Verdadero` en caso de éxito y `Falso` en caso de fallo. Cada mensaje puede contener datos en un formato estándar o valores personalizados arbitrarios. El formato del mensaje se especifica usando el parámetro `modo` , y otros valores requeridos en el arreglo asociativo dependerán del valor de este parámetro:

- `mode:"beacon"`: Este modo usa un formato simple de beaconing.
  - `beacon_uuid`: Una representación de cadena de un UUID, que puede tener un formato de 16 bits, 32 bits o 128 bits. Un UUID de 16 bits debe ser exactamente cuatro dígitos hexadecimales sin puntuación;  un UUID de 32 bits debe ser exactamente ocho dígitos hexadecimales sin puntuación; y un UUID de 128 bits debe estar puntuado exactamente de la siguiente manera: "cd7b6f81-f738-4cad-aebf-d2a2ea36d996".
  - `beacon_major` <font color="#6B21A8">int: </font>El valor Major de 2 bytes (0 a 65535)
  - `beacon_minor` <font color="#6B21A8">int: </font>El valor Minor de 2 bytes (0 a 65535)
  - `beacon_level` <font color="#6B21A8">int</font> <font color="#14B8A6">opcional</font>:  Un entero con signo de 8 bits (-127 a 128) que corresponde a la medición del nivel de potencia Tx (en dBm) a 1 metro. El nivel predeterminado es -60.
  - `beacon_manufacturer`<font color="#6B21A8">int</font> <font color="#14B8A6">opcional</font>:  Un valor entero de 2 bytes (0 a 65535) que especifica el fabricante del beacon. El valor predeterminado es 76 (\&H4C).
  - `conectable` <font color="#6B21A8">bool</font> <font color="#14B8A6">optional</font>: Si el anuncio debe poder conectarse o no. Los anuncios no conectables son el comportamiento predeterminado.
  - `persistente`<font color="#6B21A8">bool</font> <font color="#14B8A6">optional</font>: Si el anuncio debe persistir después de cada reinicio. Los anuncios Beacon son persistentes de forma predeterminada.
- `mode:"eddystone-url"`: Este modo utiliza el formato [Eddystone-URL](https://github.com/google/eddystone/tree/master/eddystone-url).
  - `url`: La URL que se encapsulará en el paquete de anuncio. Si la URL es demasiado larga para caber en el paquete, la llamada a `StartAdvertising()` devolverá `Falso` y `GetFailureReason()` informará "Compressed URL is too long".
  - `tx_power` <font color="#6B21A8">int</font> <font color="#14B8A6">optional</font>:  La medición del nivel de potencia Tx (en dBm) a 0 metros. El valor predeterminado es -19, que corresponde a un nivel de -60dBm a 1 metro. La práctica de calibración recomendada consiste en medir el RSSI en un círculo a 1 metro del beacon y luego sumar 41 a la intensidad promedio de la señal medida para obtener el valor de `tx_power`: Por ejemplo, medir un RSSI de -65dBm a 1 metro produce un valor de TxPower de -2.
    - Tenga en cuenta que el valor de `tx_power` no modifica el nivel de potencia del transmisor Bluetooth (esto requiere [atenuación física](docId\:WnlbAqwoS9ev7DitdDCnh)). Más bien, el valor de `tx_power` se transmite a los clientes Bluetooth en el anuncio BLE. Los clientes pueden entonces comparar este valor con el RSSI actual de la señal para determinar su distancia aproximada al beacon.
  - `conectable` <font color="#6B21A8">bool</font> <font color="#14B8A6">optional</font>: Si el anuncio debe poder conectarse o no. Los anuncios no conectables son el comportamiento predeterminado.
  - `persistente` <font color="#6B21A8">bool</font> <font color="#14B8A6">optional</font>:  Si el anuncio debe persistir después de cada reinicio. Los anuncios Eddystone-URL son persistentes de forma predeterminada.
- `mode:"eddystone-uid"`: Este modo utiliza el formato [Eddystone-UID](https://github.com/google/eddystone/tree/master/eddystone-uid) .
  - `espacio de nombres`: Un valor de 10 bytes expresado como 20 dígitos hexadecimales
  - `instancia`: Un valor de 6 bytes expresado como 12 dígitos hexadecimales
  - `tx_power` <font color="#6B21A8">int</font> <font color="#14B8A6">optional</font>:   Especifica el nivel de potencia Tx en dBm a 0 metros. El valor predeterminado es -19, que corresponde a un nivel de -60dBm a 1 metro. La práctica de calibración recomendada consiste en medir a 1 metro y sumar 41: Por ejemplo, un RSSI de -65dBm da lugar a un valor de -24.
  - `conectable` <font color="#6B21A8">bool</font> <font color="#14B8A6">optional</font>: Si el anuncio debe poder conectarse (para GATT u otros servicios). Los anuncios no conectables son el comportamiento predeterminado.
  - `persistente` <font color="#6B21A8">bool</font> <font color="#14B8A6">optional</font>: Si el anuncio debe persistir después de cada reinicio. Los anuncios Eddystone-URL no son persistentes de forma predeterminada.
- `mode:"custom"`: Este modo admite datos personalizados arbitrarios en un campo específico del proveedor. 
  - `cutom_manufacturer_data` <font color="#14B8A6">optional:</font> Una matriz asociativa que contiene dos claves:
    - `fabricante`: Un valor entero de 2 bytes (0 a 65535)
    - `datos`: Una instancia de *roByteArray* que contiene datos
  - `service_uuid` <font color="#14B8A6">opcional</font>: Un conjunto de elementos ServiceUUID, que se pueden especificar como un arreglo de cadenas UUID o un arreglo de arreglos asociativos que contienen un par clave/valor `uuid` . Cada arreglo asociativo también puede contener una clave `datos` , que especifica ServiceData como una instancia de *roByteArray*.
  - `conectable` <font color="#6B21A8">bool</font> <font color="#14B8A6">opcional</font>: Indica si el anuncio debe ser conectable o no. Los anuncios no son conectables de forma predeterminada.
  - `persistente` <font color="#6B21A8">bool</font> <font color="#14B8A6">opcional</font>: Indica si el anuncio debe persistir después de cada reinicio. Los anuncios personalizados no son persistentes de forma predeterminada.

Para especificar múltiples anuncios, pase un arreglo de arreglos asociativos al método `StartAdvertising()` . Los anuncios se enviarán en rotación. El método fallará si uno o más anuncios son incorrectos; pruebe cada anuncio individualmente y llame a `GetFailureReason()` para determinar qué anuncio está causando el error.

Llamar al método `StartAdvertising()` reemplazará cualquier anuncio anterior. Puede cambiar una lista de anuncios modificando el arreglo y llamando a `StartAdvertising()` nuevamente.

## Ejemplos

Este script utiliza *roBtManager.GetAdapterList()* para determinar si hay adaptadores Bluetooth disponibles:

```text
btm = CreateObject("roBtManager")
if btm.GetAdapterList().Count() > 0 then print "Bluetooth available"
```

Este script construye dos arreglos asociativos para anuncios con el formato "beacon" y luego los transmite ambos:

```text
adv1 = { mode : "beacon", beacon_uuid : "41fac2b21-c8cb-41e7-b011-12d1016dd39e", beacon_major : 400, beacon_minor : 22 }
adv2 = { mode : "beacon", beacon_manufacturer: &H4C, beacon_uuid : "41fac221-c8cb-41e7-b011-12d1016dd39e", beacon_major : &H1234, beacon_minor : &HFF01, beacon_level : -50 }
 
advlist = [adv1, adv2]
bm.StartAdvertising(advlist)
```

El arreglo asociativo también se puede construir en partes:

```text
adv1 = { mode: "beacon"}
adv1.Append({ beacon_uuid : "41fac221-c8cb-41e7-b011-12d1016dd39e" })
adv1.Append({ beacon_major : 32000, beacon_minor : 100 })
```

Este script construye un anuncio con el formato "Eddystone-URL". También utiliza el parámetro opcional `tx_power` :

```text
adv1 = { mode: "eddystone-url", url: "http://www.brightsign.biz", tx_power: -24}
```

Este script construye un anuncio con formato personalizado:

```text
custom_adv = CreateObject("roByteArray")
custom_adv.FromHexString("0215434B2EB8C28F40898E7A1E644BB13B9FA000B001C5")
adv2 = { mode : "custom", custom_manufacturer_data : { manufacturer: &H4C, data : custom_adv } }
```

