使用Python将串行数据存储到文本文件中
我正在使用以下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()
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。