Ir para conteúdo
Fórum Script Brasil
  • 0

Serial Port Python


felipe_marin

Pergunta

Prezados, boa tarde ! 

Preciso ler uma porta serial de uma balança digitron com Python, para pegar o valor da pesagem e jogar numa lista. 

Alguém tem alguma ideia de como realizar ?? 

Obs: usei a biblioteca pyserial, consigo abrir conexão com a porta e ler o dado porem ele vem da seguinte forma: 

image.png.497eed6b3cff95ed837d368752ba5eed.png

O valor que preciso é somente os 3 últimos, no exemplo 349. 

 

Agradeço de imediato quem puder me ajudar. 

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

então você tem uma sequencia de bytes, você pode começar concatenando ela, tipo:

a = b''.join(sequencia)

apos isso você vai ter que identificar as posições das informações uteis, igual que se faz numa lista.

e então fatiar essa sequencia, e converter em inteiro, ou flutuante

b = a[2:]
c = int(b)

são dicas aproximadas, você vai ter que fazer testes ai

Link para o comentário
Compartilhar em outros sites

  • 0

beleza, vou deixar aqui uma classe que uso em uma aplicação aqui, você pode tirar como base

    class Sensor:
        def __init__(self):
            self.serial = Serial(port='/dev/serial0', baudrate=9600, timeout=0.05)


        def getLeitura(self):
            try:
                self.serial.write(b'1')
                self.leitura = [int(x) for x in self.serial.readline().split()]

            except:
                self.leitura = (0, 0)

tem o try para contornar um problema de alimentação eletrica no sistema

Link para o comentário
Compartilhar em outros sites

  • 0

O código que usei para chegar nesse informação foi esse:

import serial
from time import sleep

ser = serial.Serial( 'COM3', 9600, 8 )

while True:
    data = ser.read()
    sleep(2)

    print(data, end='')

 

O resultado ao rodar este código acima é esse: 


b'D'b'0'b'0'b'0'b'0'b'0'b'4'b'.'b'\r'

Gostaria de printar somente os 3 últimos dígitos:

004 

Editado por felipe_marin
Link para o comentário
Compartilhar em outros sites

  • 0
>>> leitura = b'D'b'0'b'0'b'0'b'0'b'0'b'4'b'.'b'\r' 
>>> print(leitura)
b'D000004.\r'
>>> leitura[1:]
b'000004.\r'
>>> leitura[1:-2]
b'000004'
>>> int(leitura[1:-2])
4
 

peguei sua leitura e fui fatiando no terminal, no seu caso é só pegar a ultima linha, claro que só vai funcionar se o padrão da mensagem não mudar.

a questão é: pode acontecer de ter alguma informação depois do ponto? uma informação que ainda não apareceu?

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado anten, consegui chegar somente os números. Após o ponto repete o dado novamente. 

Mas já consegui o que precisava. Obrigado novamente pela ajuda. 

54 minutos atrás, ArteEN disse:
>>> leitura = b'D'b'0'b'0'b'0'b'0'b'0'b'4'b'.'b'\r' 
>>> print(leitura)
b'D000004.\r'
>>> leitura[1:]
b'000004.\r'
>>> leitura[1:-2]
b'000004'
>>> int(leitura[1:-2])
4
 

peguei sua leitura e fui fatiando no terminal, no seu caso é só pegar a ultima linha, claro que só vai funcionar se o padrão da mensagem não mudar.

a questão é: pode acontecer de ter alguma informação depois do ponto? uma informação que ainda não apareceu?

 

Link para o comentário
Compartilhar em outros sites

  • 0

Assim fica muito doideira por que da para pegar casas acima de 10 🤪

import re
 
bytes_information = b'D'b'0'b'0'b'0'b'0'b'4'b'4'b'.'b'\r'
string_information = bytes_information.decode("utf-8")
list_int = re.findall("\d", string_information)
value_int = int(''.join([str(valor) for valor in list_int]))
 
print(value_int)
 
Editado por Elias Henrique
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...