使用Python将串行数据存储到文本文件中
问题描述:
我正在使用以下Python代码来存储从加速度计MMA7361L接收到的数据。该文件已创建,但没有任何数据正在写入?使用Python将串行数据存储到文本文件中
我需要将数据存储到文件,以防止数据丢失。数据由作为我的微控制器的Arduino发送,用于连接我的加速度计。
import serial
port = serial.Serial('COM4', 9600)
for i in range(0, 10):
abc=open('abc.txt', 'r+b') //append and binary(a+b) mode
x = port.read(size=1)// 1 byte
print x
abc.write(x)
abc.close()
port.close()
答
更改文件模式为'ab',它应该工作。 a + b仅在您将数据附加到数据时想要读取内容时才有用。
除非你在这里需要认真优化,它更易于阅读开头的整个文件,然后只将数据追加到它与“AB”模式重新打开它。
答
import serial
addr = 'COM4'
baud = 9600
fname = 'accel.dat'
fmode = 'ab'
reps = 10
with serial.Serial(addr,baud) as port, open(fname,fmode) as outf:
for i in range(reps):
x = port.read(size=1)
print x
outf.write(x)
outf.flush()
答
你可以这样做,我现在正在这样做,它的工作原理。我还有另一个告诉你什么com端口正在被使用,并且com端口是否存在运行while循环,如果没有,关闭文件。
进口串行 导入CSV
文件=的raw_input( '文件另存为: ') saveFile的=打开(文件, 'W')
的SerialPort =的raw_input(' 输入端口:') 端口1的serialport =
打印 “连接到......”,PORT1
的Arduino = serial.Serial(PORT1,9600)
打印 “的Arduino检测”
而真: time.sleep(0.01) 数据= arduino.readline() saveFile.write(数据) 打印数据
的代码,你显示正如注释所示,在`r + b`模式下打开文件,而不是`a + b`模式。另外,给二进制文件一个'txt'扩展名至少是令人困惑的。 – aaronasterling 2011-01-08 09:01:41