与打印机的蓝牙通信延迟 - Android

问题描述 投票:0回答:1

我正在尝试使用 DantSu/ESCPOS-ThermalPrinter-Android 与蓝牙打印机建立连接,它工作得很好。然而,我看到代码执行的那一刻和打印纸张的那一刻有一些延迟(几秒钟)。例如,打印请求是实时发起的,但是打印机需要(我不确定蓝牙套接字是否)几秒钟(3-5秒)来打印。

然后我实现了一些逻辑来手动连接到蓝牙套接字

 fun connectToBluetoothDeviceSync(device: BluetoothDevice,
                                      callback: (isConnected: Boolean, socket: BluetoothSocket?, error: String?) -> Unit) {
        try {
            val uuid: String = when(getDeviceType(device)) {
                DeviceType.PRINTER -> device.uuids[0].uuid.toString()
            }
            val bluetoothSocket: BluetoothSocket? = device.createRfcommSocketToServiceRecord(
                ParcelUuid.fromString(uuid).uuid
            )
            bluetoothSocket?.connect()
            callback(bluetoothSocket?.isConnected == true, bluetoothSocket, null)
        } catch (e: java.lang.Exception) {
            logE("Bluetooth Device Connect Async Error: ${e.message}")
            callback(false, null, e.message ?: "Couldn't connect")
        }
    }

连接需要一些时间,但有时会有所不同。有时它会在 1 秒内连接,或者需要几秒钟,或者在大约 10 秒后超时。但是,代码在几毫秒内执行,但打印机需要时间来打印数据。蓝牙热敏打印机通讯延迟这么大,而IP、USB打印机打印1-2秒以内,正常吗?

android kotlin printing bluetooth thermal-printer
1个回答
0
投票

完全取决于打印机。打印机本身可能不会立即开始打印。如果有更多数据到来并且需要超时,它可能会等待。可能需要清洁打印头。它可能需要预热热量。打印可能无法自动进行的原因有很多,与移动端的代码无关。如果你说它在几秒钟内打印出来,我认为这就足够了。

© www.soinside.com 2019 - 2024. All rights reserved.