Ir ao conteúdo

Posts recomendados

Postado
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

Postado

@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
Postado
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

Postado

@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
Postado

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",""))

 

Postado

@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.

Postado

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!