使用Python将串行数据存储到文本文件中

时间:2011-01-08 08:54:22

标签: python arduino

我正在使用以下Python代码来存储从加速度计MMA7361L收到的数据。文件已创建,但没有写入任何数据?

我需要将数据存储到文件中以防止数据丢失。数据由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()

3 个答案:

答案 0 :(得分:3)

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()

答案 1 :(得分:1)

将文件模式更改为“ab”,它应该可以正常工作。 a + b仅在您在向其追加数据时阅读内容时才有用。

除非你需要在这里进行严格的优化,否则在开头读取整个文件会更容易,然后只需将数据附加到它,然后使用'ab'模式重新打开它。

答案 2 :(得分:0)

你可以这样做,我现在这样做,它的工作原理。我还有另一个,它告诉你正在使用什么COM端口以及是否存在运行while循环的com端口,如果不存在,则关闭文件。 导入序列 导入csv file = raw_input('将文件另存为:') saveFile = open(文件,'w') serialport = raw_input('输入端口:') port1 = serialport 打印“连接到....”,port1 arduino = serial.Serial(port1,9600) 打印“检测到Arduino” 而真:     time.sleep(0.01)     data = arduino.readline()     saveFile.write(数据)     打印数据