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

2 投票
3 回答
10620 浏览
提问于 2025-04-16 09:37

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

我需要把数据存储到文件中,以防数据丢失。这些数据是由一个Arduino发送的,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

你可以这样做,我现在就是这么做的,而且效果很好。我还有另一个程序,它会告诉你哪些串口正在被使用,以及如果这个串口存在,就运行while循环,如果不存在,就关闭文件。

import serial
import csv

file = raw_input('Save File As: ')
saveFile = open(file, 'w')

serialport = raw_input('Enter Port: ')
port1 = serialport

print "Connecting to....", port1

arduino = serial.Serial(port1, 9600)

print "Arduino detected"

while True: 
    time.sleep(.01)
    data = arduino.readline()
    saveFile.write(data)
    print data
1

把文件模式改成'ab',这样就可以正常工作了。'a+b'只有在你想在添加数据的同时读取文件内容时才有用。

如果你不需要特别复杂的优化,最简单的方法是先把整个文件读出来,然后再用'ab'模式重新打开文件,接着把数据添加上去。

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

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。

撰写回答