Я добавляю метод в библиотеку escpos-coffee , который возвращает состояние термопринтера, т. Е. Находится ли он в режиме онлайн / в автономном режиме, заканчивается ли бумага или бумага заканчивается, или открыт ли / закрыт ли кассовый ящик.
Я добавил метод showPrinterStatus в библиотеку escpos-coffee, основанную на команде ESC c 3 , которая отправляет команду на принтер в байтовой форме. Этот метод предположительно включает датчик конца бумаги для рулонной бумаги, а также датчик конца бумаги для рулонной бумаги. Кроме того, я добавил еще один метод "TransStatus", основанный на команде GS r , которая передает состояние датчика бумаги для n = 1 и n = 49, а также состояние кассового ящика для n = 2 и n = 50. Вот код:
/**
*
* @param nSignal
* @return
* @throws IOException
* Method decides whether the printer should return an output paper-end signal to a parallel interface or not
* input 1,2 4,8 to enable, 0 to disable
*/
public EscPos showPrinterStatus(int nSignal) throws IOException {
write(27);
write('c');
write('3');
write(nSignal);
return this;
}
/**
*
* @param n
* @return
* @throws IOException
* returns the status of the printer, 1 or 49 returns paper sensor status, 2 or 50 returns drawer kick-out connector status
*/
public EscPos transmitStatus(int n) throws IOException{
write(29);
write('r');
return this;
}
Я использую Device Monitoring Studio и ожидал, что будет какое-то видимое сообщение. Похоже, что метод showPrinterStatus отправляет сигнал на термопринтер, но, как представляется, метод TransferStatus вообще не вызывает никакой связи. Кроме того, если я проверяю состояние кассового ящика и оставляю кассовый ящик открытым, связь вообще отсутствует, и запрос просто ставится в очередь. После того, как я вставил денежный ящик обратно, потребуется 5-10 минут для выполнения команды принтером, который все еще находится в очереди все это время.
Что-то я забываю в своей реализации или есть лучший способ, чем Device Monitoring Studio, для отображения состояния принтера?