使用Python将传感器数据写入文本文件Arduino

时间:2016-12-14 14:12:24

标签: python-2.7 io arduino

我仍在向初学者学习如何使用Arduino和RPi来探索Python编程的强大功能。 好吧,我已经写了一小段代码(从不同的教程和帖子获得帮助),用于将收到的传感器数据从串口写入时间戳到.txt文件中。这是代码:

import serial, io
import numpy
import matplotlib.pyplot as plt
from drawnow import *
from datetime import datetime

arduinoData = serial.Serial('com3',9600)
outfile = 'C:/Python27/test.txt'

sio=io.TextIOWrapper(io.BufferedRWPair(arduinoData,arduinoData,1),encoding='ascii',newline='\r')

with open(outfile,'w') as f:
    while True: # while loop that loops forever
        while (arduinoData.inWaiting()==0): #Wait here until there is data
            pass #do nothing
    arduinoString = sio.readline()
    f.write(datetime.now(),isoformat() + '\t' + arduinoString + '\n')
    f.flush()
    f.close()
  • 请忽略 drawow matplotlib 库,因为我稍后会使用这些库来显示数据。< / LI>

问题是虽然文件是在所述位置创建的,但我没有在文件中写入任何内容。我可能会完全搞砸了。因此,我需要指导这个程序出了什么问题。

非常感谢您的支持!非常感谢你!

欢呼声

Pramit Sood

1 个答案:

答案 0 :(得分:0)

你永远不会离开无限while True:循环。

Python中的缩进非常重要 你可能打算这样做:

with open(outfile,'w') as f:
    while True: # while loop that loops forever
        while (arduinoData.inWaiting()==0): #Wait here until there is data
            pass #do nothing
        arduinoString = sio.readline()
        f.write(datetime.now(),isoformat() + '\t' + arduinoString + '\n')
        f.flush()

如果你想继续写文件,也不要关闭文件。