使用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() 
+1

的代码,你显示正如注释所示,在`r + b`模式下打开文件,而不是`a + b`模式。另外,给二进制文件一个'txt'扩展名至少是令人困惑的。 – aaronasterling 2011-01-08 09:01:41

更改文件模式为'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(数据) 打印数据