从Raspberry Pi读取的串行数据

时间:2017-09-25 12:15:20

标签: python arduino raspberry-pi3

我正在尝试从Arduino Uno捕获温度传感器读数,如果温度高或关闭则打开AC,然后将温度发送到Raspberry Pi并写入日志文件。

我在Raspberry Pi中的Python代码,用于捕获事件并记录到文件中。

Thread.sleep(TimeUnit.SECONDS.toMillis(15))

我可以得到温度值(有时它是一团糟 16707 ),但最重要的是它不会写入日志文件。

我错过了什么地方?我是否必须在Python代码中包含另一个库?

1 个答案:

答案 0 :(得分:0)

您正在关闭每个循环结束时的日志文件。它应该运行一次,但在文件关闭后,它不会再次写入,直到你打开它。只需将f.close()放在while循环之后。或者作为一种更好的做法:

ser = serial.Serial('/dev/ttyACM0', 9600)
with open("temperature.log", "w+") as f:
    print 'before while'
    while 1:
        val = ser.readline()
        f.write(now.strftime("%Y-%m-%d %H:%M"))
        f.write(' -> ')
        f.write(val)

一旦with语句中的代码完成,这将自动关闭文件。