Ir ao conteúdo
  • Cadastre-se
Ofioneu

Python Converter tipos de dados para int

Recommended Posts

import serial
import psycopg2

try:
    conn = psycopg2.connect("dbname='postgres' user='pi' host='localhost' password='root'")
    cur = conn.cursor()
except:
    print(" Não consigo conectar-me ao banco de dados ")
while 1:
    cur = conn.cursor()
    sensor = serial.Serial('/dev/ttyACM0', 9600)
    int(sensor)
    print(sensor.readline ())
    cur.execute("CREATE TABLE IF NOT EXISTS test (id serial PRIMARY KEY, num integer, data varchar);")
    conn.commit()
    cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (sensor, "abc'def"))
    conn.commit()
    cur.close()
    #conn.close()

O que está acontecendo?

Capturar.JPG

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ofioneu você está tentando fazer um cast para inteiro em uma variável do tipo Serial e isso não é permitido. O que exatamente você gostaria de imprimir? Seria uma espécie de ID?

 

Recomendo que leia a documentação da lib: PySerial_api

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
import serial
import psycopg2

try:
    conn = psycopg2.connect("dbname='postgres' user='pi' host='localhost' password='root'")
    cur = conn.cursor()
except:
    print(" Não consigo conectar-me ao banco de dados ")
while 1:
    cur = conn.cursor()
    sensor = serial.Serial('/dev/ttyACM0', 9600)
    print(sensor.strip())
    cur.execute("CREATE TABLE IF NOT EXISTS test (id serial PRIMARY KEY, num integer, data text);")
    conn.commit()
    cur.execute("INSERT INTO test (id, num, data) VALUES (defalt, "+int(sensor)+","+str("abc")+")")
    conn.commit()
    cur.close()
    #conn.close()
   
        

@GeorgeNVJá mudei algumas coisas, mas me parece que o metodo 'Serial' vem com alguns comandos como b, 387 \r \n, e isso não deixa ele ser convertido e após tentar retirar esses caracteres com o strip() surgiu outro erro:

Capturar.JPG

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ofioneu  esse erro aconteceu porque o strip() é uma função de objetos do tipo string e por isso não funciona com a variável sensor, pois ela é do tipo Serial. Você precisa achar uma forma de extrair, no formato str, a informação que você deseja do sensor para então passá-la para o banco de dados.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

comecei a fazer isso, mas está me dando trabalho kkkk

import serial
import psycopg2

sensor = serial.Serial('/dev/ttyACM0', 9600)

while 1:
    valor=sensor.readline().strip()
    print(valor.replace("b",""))

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ofioneu  remove o strip() e faz um print(valor) para mostrar como esse valor está sendo impresso na tela. Acredito que esse b que você se refere, deve representar um numero no formato de byte. Se for isso mesmo, você está fazendo essa conversão de forma errada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, exatamente isso que você disse, já consegui converter só pra string agora estou tentando converter pra int.
Já posto o resultado

adicionado 4 minutos depois

esse b é referente a base 10

adicionado 52 minutos depois

Resolução do problema:

import serial
import psycopg2

sensor = serial.Serial('/dev/ttyACM0', 9600)

while 1:
    valor= int(str(sensor.readline().strip(),'ascii'))
    print(valor)

Obrigado @GeorgeNV

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×