一直想解决这个问题。 Adruino的晴雨表数据如下:
1008.94 1008.95 1008.94
我很满意。这些得到"读"现在每10秒钟。
问题在于我的python脚本。我可以读取和写入mySQLdb的所有数据。但数据并不总是好的。它会像:
1008.94 108.95 108.94 1008.96
"失去了零"或其他价值总是出现在Adruino的串行监视器上。
如何让python脚本读取整个xxxx.xx行?甚至在低压xxx.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
答案 0 :(得分:0)
我找到了以下here:
ser.read(ser.inWaiting())
根据pySerial documentation inWaiting()
确实返回缓冲区中接收数据的大小。这可以解决您的问题,因为读取函数具有参数给出的数据大小(在您的情况下为1个字节,因为您未指定)如果接收的数据较大,则可能导致此类问题。