Я использую термопринтер Citizen PD-24 и создаю приложение для печати счетов в android. Я выполнил большую часть кодирования, счет получился хорошо, все, что осталось, - это обработать неожиданные события во время печати. Согласно справочной документации по команде ESC / P, вы можете использовать команду Запросить состояние принтера (0x1B 0x69 0x53), чтобы получить текущее состояние принтера, включая ошибки, если они есть, но даже если я отправлю эти байты на принтер ( используя разъем Bluetooth, кстати) я все еще не могу прочитать что-либо из входного потока.
Вот упрощенный пример того, что я делаю:
socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
outputStream.write(0x1B);
outputStream.write(0x69);
outputStream.write(0x53);
byte[] status = new byte[inputStream.available()];
inputStream.read(status);
Состояние должно быть 32 байта, который содержит состояние принтера, но входной поток всегда пуст. Я нашел примеры на других языках, для других принтеров, использующих usb, и это работает для них, но я не могу заставить его работать на меня. Любая помощь очень ценится.