PyUsb - Ler dados impressora Térmica via Usb ESC/POS

22 views
Skip to first unread message

Douglas C. Rodrigues

unread,
Oct 22, 2021, 9:59:26 PMOct 22
to Python Brasil

Pessoal, tudo bem?

Preciso ler os dados dos sensores de uma determinada impressora térmica, em especifico a PRT MPT725, em fim, ela utiliza comandos ESCPOS para sua comunicação, então a resposta não precisa ser baseada apenas nesse modelo e marca.

Eu atualmente consigo mandar comandos ESCPOS para a mesma, como acionar a guilhotina, aumentar e diminuir tamanho das fontes e etc... tudo isso pela biblioteca Pyusb.

Porém, não consigo ler o que a impressora me envia na porta usb com a biblioteca pyusb. A intenção era monitorar os sensores de falta de papel, papel enroscado entre outros, espero receber esses dados na usb após enviar o comando escpos correspondente.

Esse é meu código:

import usb.core 

import usb.util 


def main(): 

    device = usb.core.find(idVendor=0x20d1, idProduct=0x7008)


    # Utilizo a primeira configuração 

    device.set_configuration()


    # Primeiro endpoint 

     endpoint = device[0][(0,0)][0] 

     # le o pacote de dados

     data = None 

     try: 

         data = device.read(endpoint.bEndpointAddress, endpoint.wMaxPacketSize) 

         sret = ''.join([chr(x) for x in data]) 

         print('resp',sret.decode('utf-8')) 

    except usb.core.USBError as e: 

        data = None 

        if e.args == ('Operation timed out',): 

            pass 

if __name__ == '__main__': 

    main()

#Retorna isso >>>> 

' ' '                         ('resp',u'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x               00\x00\x00\x00\x00\x00\x00\x00\x0') ''' 

' ' '    

Retorna isso >> é o que recebo da impressora, não consigo interpretar isso com inteiros mesmo tentando converter.

 

Se alguém por favor conseguir colocar um exemplo, ficarei muito agradecido

Markos

unread,
Oct 23, 2021, 5:59:34 PMOct 23
to python...@googlegroups.com

Oi Douglas,

Ainda não tive experiência de comunicação serial usando o Python.

Mas uma dica que talvez possa ajudar.

Você já verificou se precisa configurar os parâmetro de comunicação?

Ex: bits de dados, paridade, bit de parada e a velocidade de comunicação.

Aqui algumas dicas:

www.c2o.pro.br/automacao/ar01s11.html

Bom trabalho,
Markos
--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/e110e96e-d982-48dd-b69d-a4c9bdc2ffcan%40googlegroups.com.

Douglas C. Rodrigues

unread,
Oct 23, 2021, 9:04:06 PMOct 23
to python...@googlegroups.com
Markos,

Obrigado pela sua atenção e tempo em me ajudar a solucionar esse problema. 

Fico muito agradecido.

Infelizmente eu não estou utilizando a porta serial e sim a usb direta. Consigo enviar dados de impressão, acionar a guilhotina entre outros comandos escpos mais a leitura é que está me fazendo cair os cabelos kkk

Obs: achei o link que tu passou mega interessante.

Você recebeu essa mensagem porque está inscrito em um tema no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tema, acesse https://groups.google.com/d/topic/python-brasil/lJpUy0oLHKI/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus temas, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/4700a9db-3984-350a-4dc7-8371ea015c94%40c2o.pro.br.

Edson Garrido

unread,
Oct 29, 2021, 7:33:19 AMOct 29
to python...@googlegroups.com
Bom dia, Douglas,

Já experimentou a lib python-escpos? https://python-escpos.readthedocs.io/en/latest/

Talvez os parâmetros retornados pelo método query_status ajudem.

Estou trabalhando em um projeto onde eventualmente terei que fazer algo semelhante, por isso deixei os pontos críticos da entrega mapeados para me aprofundar neles na medida em que o desenvolvimento evolui. 

Boa sorte,



Edson Garrido


--
Reply all
Reply to author
Forward
0 new messages