Red de conocimiento informático - Problemas con los teléfonos móviles - uniapp implementa la función de impresión de recibos por Bluetooth

uniapp implementa la función de impresión de recibos por Bluetooth

Un proyecto reciente agregó una función de impresión de recibos por Bluetooth. Como antes no sabía mucho sobre las impresoras Bluetooth, encontré muchos problemas. Pasé algún tiempo empaquetando la conexión Bluetooth y los módulos de impresión en un componente común y escribí un ejemplo de impresión. una nota aquí en caso de que lo olvides.

Componente: Ejemplo de componente

Lo que este proyecto necesita realizar es la conexión entre la aplicación y la impresora Bluetooth. El contenido de impresión es el siguiente:

1. Logotipo de la empresa (imagen local)

2. Datos de texto con formato y diseño especificados (línea recta, chino e inglés)

3. Datos de imagen firmados (interfaz para devolver la dirección de imagen de red). )

Primero, debemos pensar en la conexión Bluetooth y el módulo de impresión como un componente general y escribir un ejemplo de impresión. Hay un registro que olvidé aquí. p>

En primer lugar, si desea poder imprimir, debe conectarse a Bluetooth. Conozca el proceso de desarrollo de la conexión Bluetooth de bajo consumo:

Siga la API. para completar el proceso desde la conexión hasta la impresión:

Aquí encapsulo el proceso de conexión a Bluetooth e impresión en un componente. El componente principal solo necesita unir el comando en el método onPrint e importar los datos de. el comando de empalme en el componente a través del atributo bufferData para imprimir, onPrintSuccess y onPrintFail son la devolución de llamada para el éxito y el fracaso de la impresión:

La implementación interna del componente es la siguiente:

1 Haga clic en el botón Imprimir, abra el adaptador Bluetooth (openBluetoothAdapter) y obtenga los dispositivos conectados (getConnectedBluetoothDevices). Si no hay ningún dispositivo conectado, abra el cuadro emergente de búsqueda de dispositivos para buscar el dispositivo (paso 2), si el. dispositivo está conectado, ejecute el método de impresión (paso 4)

El blesdk aquí es por conveniencia. Las API relacionadas con Bluetooth de Uniapp se unifican en un archivo y los métodos se cambian a asíncronos, lo que también incluye agregar la instrucción CPCL. Métodos de empalme de caracteres. gbk es un módulo utilizado para transcodificar datos a un formato de datos aceptable para la impresora

2. Abra el cuadro emergente del dispositivo de búsqueda (isShowSearch se usa para controlar la visualización y ocultación del cuadro emergente)

Haga clic en Iniciar búsqueda (startBluetoothDevicesDiscovery) y supervise la búsqueda de nuevos dispositivos (onfindBlueDevices). La operación de búsqueda de Bluetooth consume más recursos del sistema, por lo que se recomienda conectar el dispositivo y cerrar la página. será destruido (stopBlueDevicesDiscovery). Aquí, agregué dos botones para controlar la activación/desactivación de la búsqueda.

Debido a las diferentes condiciones de filtrado (rssi y nombre del dispositivo, ID del dispositivo), es necesario filtrar. la lista de dispositivos monitoreada por onfindBlueDevices

3. Dispositivo Haga clic en la lista para seleccionar el dispositivo conectado

①Cada elemento de la lista de dispositivos puede acceder al nombre del dispositivo. Información como el ID del dispositivo se puede utilizar para buscar el dispositivo. Después de obtener el ID del dispositivo y otra información, debemos conectarnos al ID del dispositivo y crear una conexión Bluetooth (createBLEConnection). Antes de eso, podemos monitorear los cambios en el estado de la conexión a través de onBLEConnectionStateChange. p>

② Después de que la conexión sea exitosa, apague el interruptor del dispositivo en el evento de búsqueda. Después de que la conexión sea exitosa, debe obtener el ID de dispositivo del servicio del dispositivo (getBLEDeviceServices. Aquí debe establecer un retraso para el método de adquisición; de lo contrario, el ID de servicio obtenido estará vacío

③Después de obtenerlo con éxito). servicio del dispositivo, se devolverá la matriz servicesId. Necesitamos obtener el valor de la característica a través de deviceId y serviceId.

Obtenga el valor de la característica a través de serviceId (getDeviceCharacteristics)

④ Después de obtener el valor de la característica, debe encontrar una variable para almacenar el valor de la característica, porque el valor de la característica posteriormente debe enviar datos a la impresora. Cierre el cuadro de búsqueda emergente

4. Después de conectar el dispositivo, haga clic en el botón Imprimir para comenzar a empalmar e imprimir datos. En el primer paso, se completa para determinar si hay un dispositivo conectado y luego comienza a empalmar los datos y a imprimir. La tarea aquí es unir los datos a la página principal (onPrint). se actualiza, los datos comienzan a enviarse al dispositivo, los parámetros requeridos se optan en los parámetros y deviceId es la identificación del dispositivo. serviceId es la identificación del servicio y luego haga clic en el botón Imprimir; serviceId es la identificación del servicio; featureId es el valor del código de característica, que debe convertirse al formato GBK cuando todos los datos se envían correctamente; ; onceLength es la unidad de paquetes de datos La longitud de cada paquete de datos enviado, debido a que Android e iOS son diferentes, se agrega un juicio. sendDataToDevice encapsula el método de envío de paquetes de datos.

5. Empalme los datos de bufferData en la página principal de onPrint y agregue el método de instrucción CPCL en bluetoolth.js (@/components/kk-printer/utils/bluetoolth.js). ejemplo de componente js), los siguientes ejemplos de componentes muestran algunos métodos de empalme de instrucciones comúnmente utilizados. Puede ver el archivo @/components/kk-printer/utils/bluetoolth.js en el proyecto para obtener información sobre la implementación específica del método de encapsulación de instrucciones.

6, uso en proyectos reales:

①Introduzca y use el componente kk-printer en la carpeta de componentes de la página

Así es como se usa Bluetooth.

④ Al enviar paquetes de datos, debido a una conexión inestable del dispositivo, a menudo ocurre 10007 y no se puede encontrar el valor característico. Es necesario registrar el punto de interrupción en la devolución de llamada de falla y continuar enviando paquetes de datos posteriores. p>

.