蓝牙Socket实现ESC/POS打印机通信无响应问题排查求助
蓝牙Socket实现ESC/POS打印机通信无响应问题排查求助
我现在正在尝试通过蓝牙使用ESC/POS协议实现热敏打印机的通信,目前已经能正确识别到绑定的蓝牙热敏打印机,Socket也显示连接成功,但不管发送什么指令都没有反应——比如我试着发送走纸指令(代码如下),打印机完全没动静。
我现在不仅找不到问题所在,还不知道该怎么验证字节是否真的写入到了打印机端。
附我的实现代码:
private fun getDeviceByAddress(address: String): BluetoothDevice? { return bluetoothManager.adapter.bondedDevices.find { it.address == address } } suspend fun feed(printer: Printer, lines: Int = 1) { getDeviceByAddress(printer.address)?.let { device -> device.createRfcommSocketToServiceRecord(SPP_UUID) .let { socket -> try { socket.connect() socket.outputStream.write(byteArrayOf(0x1B, 0x40)) socket.outputStream.write(byteArrayOf(0x1B, 0x64, lines.toByte())) socket.outputStream.flush() } catch (e: Exception) { e.printStackTrace() } finally { withTimeout(100) { socket.close() } } } } }
另外补充一下:我知道这个打印机品牌有官方SDK,但我就是想纯通过ESC/POS指令来完成通信,不想依赖SDK。
有没有朋友能帮忙分析下可能的问题点?或者教教我如何验证指令是否成功发送到打印机?
备注:内容来源于stack exchange,提问作者Jüri Kiin
相关产品推荐
相关产品推荐

