{{indexmenu_n>1}} ====== Bluetooth ====== \\ ==== Método para Control de Bluetooth del móvil ==== \\ Sirve para conectarse por puerto serie a un dispositivo bluetooth. \\ \\ |< 70% 20% - >| ^ Métodos ^ Descripción ^ | **connect** | Conecta a la dirección MAC especificada por parámetro, o a la guardada por %%BluetoothSerialPort%%.selectBluetoothDevice | | **disconnect** | Desconecta el socket bluetooth limpiamente | | **getDiscoverableBluetoothDevices** | Es el resultado de %%BluetoothSerialPort%%.getDiscoverableDevices | | **read** | Lee X bytes del socket bluetooth. Devuelve el resultado convertido a cadena | | **selectBluetoothDevice** | Muestra una pantalla para seleccionar el dispositivo bluetooth | | **setTimeout** | Define un timeout para las operaciones de lectura/escritura | | **sleep** | Duerme durante X milisegundos | | **write** | Escribe una cadena en el socket bluetooth \\ ==== Funcionalidades implementadas para Control de Bluetooth del móvil ==== |< 70% 20% - >| ^ Funcionalidades Implementadas ^ Descripción ^ | **Buscar Dispositivos** | Busca los dispositivos disponibles para conectar. | | **Seleccionar Dispositivo** | Permite seleccionar dispositivo para conectar, devuelto por bluetoothSerial.getDiscoverableBluetoothDevices() y mostrado en lista de dispositivos disponibles. | | **Conectar y escribir en puerto serie.** | Permite escribir en puerto serie del dispositivo previamente conectado. | | **Conectar y leer en puerto serie.** | Permite leer en puerto serie del dispositivo previamente conectado. | | **Conectar y leer en puerto serie. Recordar dispositivo** | Conecta sin parámetros, permite leer y recordará el último dispositivo que se seleccionó. | | **Conectar y escribir en puerto serie. Recordar dispositivo** | Conecta sin parámetros, permite escribir y recordará el último dispositivo que se seleccionó. | | **Conectar Chat** | Permite conexión simulando Chat entre dispositivos conectado por bluetooth | | **Desconectar Chat** | Cierra Chat previamente inicializado por bluetooth. | | **Enviar texto** | Envía diálogo, cadena de texto entre dispositivos conectados por el bluetooth simulando Chat | \\ **Ejemplos de funciones y uso:** function buscarDispositivos() { ui.showWaitDialog(); try { let lstDevices = bluetoothSerial.getDiscoverableBluetoothDevices(); if (lstDevices === null) { ui.showToast("No se encontraron dispositivos Bluetooth visibles"); } else { let sMessage = ""; for (let i = 0; i < lstDevices.length;i++) { let bluetoothDevice = lstDevices[i]; if (i !== 0) { sMessage = sMessage + "\n"; } sMessage = sMessage + bluetoothDevice.getDeviceName() + " " + bluetoothDevice.getMacAddress() + " " + bluetoothDevice.getRssi() + "dBm"; } ui.msgBox(sMessage, "Mensaje", 0); } } finally { ui.hideWaitDialog(); } } function seleccionarDispositivo() { ui.showWaitDialog(); try { bluetoothSerial.selectBluetoothDevice(); } finally { ui.hideWaitDialog(); } } function escribirPuertoSerie() { ui.showWaitDialog(); try { let bluetoothDevice = null; let lstDevices = bluetoothSerial.getDiscoverableBluetoothDevices(); if (lstDevices === null) { ui.showToast("No se encontraron dispositivos Bluetooth visibles"); } else { for (let i = 0; i < lstDevices.length;i++) { bluetoothDevice = lstDevices[i]; if (bluetoothDevice.getDeviceName() == "zebramz") { break; } else { bluetoothDevice = null; } } } if (bluetoothDevice === null) { throw "No se encontró el dispositivo zebra"; } bluetoothSerial.connect(bluetoothDevice.getMacAddress()); bluetoothSerial.write("hola que tal"); bluetoothSerial.disconnect(); } finally { ui.hideWaitDialog(); } } function leerPuertoSerie() { ui.showWaitDialog(); try { let bluetoothDevice = null; let lstDevices = bluetoothSerial.getDiscoverableBluetoothDevices(); if (lstDevices === null) { ui.showToast("No se encontraron dispositivos Bluetooth visibles"); } else { for (let i = 0; i < lstDevices.length;i++) { bluetoothDevice = lstDevices[i]; if (bluetoothDevice) { if (bluetoothDevice.getDeviceName() == "zebramz") { break; } else { bluetoothDevice = null; } } } } if (bluetoothDevice === null) { throw "No se encontró el dispositivo zebra"; } bluetoothSerial.connect(bluetoothDevice.getMacAddress()); bluetoothSerial.write("! U1 getvar \"appl.date\"\r\n"); bluetoothSerial.sleep("300"); let buffer = bluetoothSerial.read(10); bluetoothSerial.disconnect(); ui.showToast("El buffer vale: " + buffer); } finally { ui.hideWaitDialog(); } } function leerPuertoSerieRecordarDispositivo() { ui.showWaitDialog(); try { //Connect sin parámetros recordará el último dispositivo que se seleccionó bluetoothSerial.connect(); bluetoothSerial.write("! U1 getvar \"appl.date\"\r\n"); bluetoothSerial.sleep("300"); let buffer = bluetoothSerial.read(10); bluetoothSerial.disconnect(); ui.showToast("El buffer vale: " + buffer); } finally { ui.hideWaitDialog(); } } function escribirPuertoSerieRecordarDispositivo() { ui.showWaitDialog(); try { //Connect sin parámetros recordará el último dispositivo que se seleccionó bluetoothSerial.connect(); bluetoothSerial.write("hola que tal"); bluetoothSerial.sleep("3000"); bluetoothSerial.disconnect(); } finally { ui.hideWaitDialog(); } } function connectChat() { ui.showWaitDialog("Conectando..."); try { bluetoothSerial.setTimeout(10000); bluetoothSerial.connect(); ui.showSnackbar("Conectado"); } finally { ui.hideWaitDialog(); } } function disconnectChat() { ui.showWaitDialog("Desconectando..."); try { bluetoothSerial.disconnect(); ui.showSnackbar("Desconectado"); } finally { ui.hideWaitDialog(); } } function sendChat() { if (!self.MAP_TEXTO) { return; } ui.showWaitDialog("Enviando..."); try { bluetoothSerial.write(self.MAP_TEXTO); let sResponse = bluetoothSerial.read(); if (!sResponse) { throw "No hubo respuesta"; } self.MAP_CHAT = self.MAP_CHAT + "\n" + sResponse; ui.refreshValue("MAP_CHAT"); } finally { ui.hideWaitDialog(); } } Más referencias:[[wiki:2.-desarrollo-app:2.4.-scripting-modelo-objetos:b.-objetos-complementarios:start#bluetoothserialport|BluetoothSerialPort]]