Как прочитать статус ASB в python -escpos - PullRequest
0 голосов
/ 20 марта 2020

Я хочу прочитать ASB и другие результаты статуса в python -escpos. Я думал, что метод ._read () будет работать, но я получаю ошибку «AttributeError:« Serial »не имеет атрибута« _read »». Я проверил, есть ли метод _read () с inspect.

Любое предложение о том, как я могу прочитать статусы в python -escpos?

1 Ответ

1 голос
/ 22 марта 2020

Пожалуйста, попробуйте указать команду GS a в качестве параметра в методе query_status() и вызвать его.

GS a

[Name]
Enable/disable Automatic Status Back (ASB)
[Format]
ASCII   GS  a   n
Hex     1D  61  n
Decimal 29  97  n
[Range]
n = 0 – 255
[Default]
n: different depending on the printers

Попробуйте, указав 0xFF для n.

query_status (mode)

Запрашивает принтер о его состоянии и возвращает массив целые числа, содержащие его.

Параметры: mode - целое число, которое устанавливает режим состояния, запрашиваемый для принтера. - RT_STATUS_ONLINE: состояние принтера. - RT_STATUS_PAPER: датчик бумаги. Тип возвращаемого значения: массив (целое число)

def query_status (self, mode):

def query_status(self, mode):
    """
    Queries the printer for its status, and returns an array of integers containing it.
    :param mode: Integer that sets the status mode queried to the printer.
        - RT_STATUS_ONLINE: Printer status.
        - RT_STATUS_PAPER: Paper sensor.
    :rtype: array(integer)
    """
    self._raw(mode)
    time.sleep(1)
    status = self._read()
    return status

def _raw (self, msg):

def _raw(self, msg):
    """ Print any command sent in raw format
    :param msg: arbitrary code to be printed
    :type msg: bytes
    """
    self.device.write(self.out_ep, msg, self.timeout)

def _read (self):

def _read(self):
    """ Reads a data buffer and returns it to the caller. """
    return self.device.read(self.in_ep, 16)

# Команда состояния

RT_STATUS = DLE + EOT
RT_STATUS_ONLINE = RT_STATUS +  b'\x01'
RT_STATUS_PAPER = RT_STATUS +  b'\x04'
RT_MASK_ONLINE = 8
RT_MASK_PAPER = 18
RT_MASK_LOWPAPER = 30
RT_MASK_NOPAPER = 114
...