roBtManager
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 BSBtBSBtManager.
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.
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 int: El valor Major de 2 bytes (0 a 65535)
- beacon_minor int: El valor Minor de 2 bytes (0 a 65535)
- beacon_level int opcional: 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_manufacturerint opcional: Un valor entero de 2 bytes (0 a 65535) que especifica el fabricante del beacon. El valor predeterminado es 76 (&H4C).
- conectable bool optional: Si el anuncio debe poder conectarse o no. Los anuncios no conectables son el comportamiento predeterminado.
- persistentebool optional: 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.
- 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 int optional: 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). 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 bool optional: Si el anuncio debe poder conectarse o no. Los anuncios no conectables son el comportamiento predeterminado.
- persistente bool optional: 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 .
- 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 int optional: 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 bool optional: Si el anuncio debe poder conectarse (para GATT u otros servicios). Los anuncios no conectables son el comportamiento predeterminado.
- persistente bool optional: 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 optional: 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 opcional: 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 bool opcional: Indica si el anuncio debe ser conectable o no. Los anuncios no son conectables de forma predeterminada.
- persistente bool opcional: 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:
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:
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:
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 :
adv1 = { mode: "eddystone-url", url: "http://www.brightsign.biz", tx_power: -24}Este script construye un anuncio con formato personalizado:
custom_adv = CreateObject("roByteArray")
custom_adv.FromHexString("0215434B2EB8C28F40898E7A1E644BB13B9FA000B001C5")
adv2 = { mode : "custom", custom_manufacturer_data : { manufacturer: &H4C, data : custom_adv } }