Данные барометра от Адруино до RPi. Ошибка Python с readline ()

python mysql readline

44 просмотра

1 ответ

Я пытался это исправить. Данные барометра на Adruino выглядят так:

1008,94 1008,95 1008,94

Которой я доволен На данный момент они «читаются» каждые 10 секунд.

Проблема с моим скриптом Python. Я могу читать и записывать все данные в mySQLdb. Но данные не всегда хороши. Это будет выглядеть примерно так:

1008,94 108,95 108,94 1008,96

«Потерянный ноль» или другое значение всегда отображается на серийном мониторе Adruino.

Как я могу получить скрипт Python для чтения всей строки xxxx.xx? Просто подумал, даже во времена низкого давления ххх.хх.

Вот мой код Python:

import MySQLdb
import serial
import time

ser = serial.Serial('/dev/ttyACM0', 9600)
db = MySQLdb.connect("localhost", "root", "pword","weather")
cursor = db.cursor()

while 1:
#       print ("Waiting for data...")
#       print("")
        x = ser.readline()
        clock = (time.strftime("%H:%M:%S"))
        print x
#       print ("Collecting data...")
        x = x
#       print ("Inserting to database...")
#       print ("")
        sql = ("""INSERT INTO WeatherP (pres, Time) VALUES (%s, %s)""", (x, clock,))
        cursor.execute(*sql)
        db.commit()
#

Спасибо. Тинус

Автор: Tinus Sonnekus Источник Размещён: 08.11.2019 11:04

Ответы (1)


0 плюса

Я нашел следующее здесь :

ser.read(ser.inWaiting())

Согласно документации pySerial inWaiting()действительно возвращает размер полученных данных в буфер. Это может решить вашу проблему, потому что функция чтения имеет размер данных, который она принимает, заданный параметром (в вашем случае 1 байт, поскольку вы не указали), если полученные данные больше, это может вызвать такие проблемы.

Автор: Robin Weiland Размещён: 19.08.2017 10:25
Вопросы из категории :
32x32