我试图使用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秒内打印?
1条答案
按热度按时间odopli941#
这完全取决于打印机。打印机本身可能不会立即开始打印。它可能会等待,以防更多的数据到来,需要超时。它可能需要清洁打印头。它可能需要预热热气流。打印可能不是自动的原因有很多,与移动的端的代码无关。这甚至不意味着打印机没有对数据做出React-它可能只需要在打印之前做一些其他的事情。如果你说它在几秒钟内打印出来,我会说这已经足够好了。