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