pyserial com balança toledo 8217

1,741 views
Skip to first unread message

Edinei Colli

unread,
Oct 23, 2014, 12:00:51 PM10/23/14
to python...@googlegroups.com
Boa tarde pessoal,

Estou tentando capturar o peso de uma balança de checkout Toledo mas não estou conseguindo.

Sou novo em python, vi alguns exemplos, procurei no github e aqui no grupo, mas ainda assim não consegui fazer funcionar.

Segue o código que estou tentando:

from curses.ascii import ENQ, ETX
import timeimport serial
__author__
= 'dev'


class toledo:


    _serial
= serial.Serial(
        port
='/dev/tty3',
        baudrate
=2400,
        parity
=serial.PARITY_NONE,
        stopbits
=serial.STOPBITS_ONE,
        bytesize
=serial.EIGHTBITS,
        timeout
=1
        writeTimeout
=2
   
)
   
def __init__(self):
       
if self._serial.isOpen():
           
self._serial.close()
       
self._serial.open()


   
def capturarPeso(self):

       
        __message
= str(chr(ENQ)) # tentativa
       
#__message = chr(ENQ)     # tentativa

       
if self._serial.isOpen():


           
print(__message)
           
print(self._serial.portstr)
           
self._serial.write(__message.encode('ascii')) # tentativa - retorna b''
           
# self._serial.write(__message.encode())      # tentativa - retorna b''
           
# self._serial.write(__message)               # tentativa - retorna TypeError: erro an interger is required

           
#time.sleep(.5) # tentei adicionar sleep antes da leitura mais não resolveu

           
while self._serial.inWaiting() > 0:
             
print(self._serial.read(1))


           
#return self._serial.read(7) # tentei ler dessa forma mas também retorna b''
           
self._serial.close()


Estou nessa tentativa e erro e não sei qual parte ou o que pode estar errado.

Gostaria de saber se alguém sabe ou já trabalhou com isso e poderia me ajudar a encontrar o caminho para capturar o peso corretamente

Abaixo segue mais informações sobre o equipamento:

Balança Toledo Modelo 8217 que utiliza o protocolo de comunicação P05A.
Segundo o manual do equipamento este protocolo trabalha em:
1 Stop Bit;
8 Bit de dados;
Sem paridade;

O envio de dados é iniciado, quando o equipamento recebe o sinal de controle "ENQ" (Caractere ASCII - 05H).
A partir deste comando o equipamento enviará o seguinte pacote de dados:
[STX] [PPPPP] [ETX] - peso estável
[STX] [IIIII] [ETX] - peso instável
[STX] [NNNNN] [ETX] - peso negativo
[STX] [SSSSS] [ETX] - peso acima

Onde:
 [STX] = ASCII 02H - Início da transmissão
 [ETX] = ASCII 03H - término da transmissão


Dese já agradeço a atenção.

Att.
Edinei Colli

Edinei Colli

unread,
Oct 23, 2014, 1:29:35 PM10/23/14
to python...@googlegroups.com
Esqueci de comentar, o equipamento funciona com as mesmas configurações em outro programa.

Edinei Colli

unread,
Oct 24, 2014, 7:36:59 AM10/24/14
to python...@googlegroups.com
Resolvi fazer o teste no windows e funcionou.

Alterei para: port='COM3' e str(chr(5))

    def capturarPeso(self):
        __message
= str(chr(5))



       
if self._serial.isOpen():


           
print(__message)
           
print(self._serial.portstr)
           
self._serial.write(__message.encode('ascii'))




           
self._serial.flushInput()
           
print(self._serial.read(14))
           
self._serial.close()


e retornou:
COM3
b'\x0200195\x03'

No ubuntu (VM) estava usando /dev/tty3, mas o correto é /dev/tty2, já tinha dado permissão 777 na porta serial, mas continua não funcionando.

Alguém tem alguma ideia do que pode ser (VM, Ubunto, porta serial)?

Geovani de Souza

unread,
Oct 24, 2014, 3:57:36 PM10/24/14
to python...@googlegroups.com
Edinei, vc configurou corretamente a porta serial entre o host e a VM?

flit

unread,
Oct 24, 2014, 4:11:57 PM10/24/14
to python-brasil

2014-10-24 17:57 GMT-02:00 Geovani de Souza <geovani...@gmail.com>:
Edinei, vc configurou corretamente a porta serial entre o host e a VM?

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/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 mais opções, acesse https://groups.google.com/d/optout.

Cleiton Bueno

unread,
Oct 26, 2014, 4:53:25 PM10/26/14
to python...@googlegroups.com
Confirme se o /dev/ttyXXX esta correto. E tente executar como super-usuario ou com sudo em usuario comun.

E caso reportar erro cole aqui na thread.



Em quinta-feira, 23 de outubro de 2014 14h00min51s UTC-2, Edinei Colli escreveu:

Alejandro Mesias

unread,
Oct 26, 2014, 5:41:31 PM10/26/14
to python-brasil
Trabalho com pyserial a muito tempo, os parametros que passou são todos padrão e mudar o timeout para 1 não muda muita coisa do padrão que é 3.

As orientações persistem, COM3 windows e linux /dev/ttySX . Na maquina virtual tem que encaminhar a porta.

Sabe dizer se está usando adaptador usb-serial (rs232) ? já comuniquei serial com microcontroladores antes.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/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 mais opções, acesse https://groups.google.com/d/optout.



--
======================================
Alejandro Mesias André Nebra Perez
Java/Python/Js/Something else Developer
Twitter: @meszias
Linux User #442506
Campinas - SP - Brasil - South America
======================================

Edinei Colli

unread,
Oct 27, 2014, 6:32:07 AM10/27/14
to python...@googlegroups.com
Bom dia pessoal,

Sexta no final da tarde consegui resolver o problema, só não deu tempo de postar aqui.
Não estou usando adaptador e não estava conectado na USB0, mas realmente o problema estava nome da porta que estava passando no linux.
Acabei descobrindo isso através do comando: dmesg | grep -i 'tty'.
Alterei pra /dev/ttyS1 e funcionou.

Obrigado a todos que tentaram me ajudar.

Leandro Barbosa

unread,
Oct 28, 2014, 1:22:56 PM10/28/14
to python...@googlegroups.com
Opá boa tarde!
Aproveitando o topico, os especialistas em pyserial, alguma vez já enviaram integer pelo pyserial?
Estou tendo problema em enviar o mesmo.
Att.

José Ricardo Borba

unread,
Oct 28, 2014, 1:46:41 PM10/28/14
to python-brasil
Leandro,

Abra outra thread, por favor.

Abraco,

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/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 mais opções, acesse https://groups.google.com/d/optout.



--
José Ricardo Borba

Reply all
Reply to author
Forward
0 new messages