我正在使用此代码从串行端口读取值并将其写入文本文件
import serial
ser = serial.Serial("/dev/ttyUSB0", 9600)
text_file = open("output.txt", 'w')
while ser.read():
x=ser.read()
print(x)
text_file.write(x)
text_file.flush()
text_file.close()
ser.close()
此代码正常工作,值将附加在文本文件中。有没有办法在串行接收每个值时覆盖文本文件,即只需要将最后一个值存储在文本文件中。 ser.read()创建一个无限循环,因此停止代码的唯一方法是使用键盘中断(ctrl + z),但在使用它时,文本文件和串行连接保持未闭合状态,我该如何解决?
答案 0 :(得分:3)
您可以在写入之前截断文件。这样,当您按照要求顺序接收每个值时,它将坚持存储值。略微修改代码,
import serial
ser = serial.Serial("/dev/ttyUSB0", 9600)
text_file = open("output.txt", 'w')
while ser.read():
x=ser.read()
print(x)
test_file.seek(0)
text_file.truncate()
text_file.write(x)
text_file.flush()
text_file.close()
ser.close()
这样您的文件将保持最新值 - 请使用tail -F otuput.txt
进行检查。
答案 1 :(得分:2)
from serial import Serial
with (open("output.txt", 'w'), Serial("/dev/ttyUSB0", 9600)) as text_file, ser:
while ser.read():
x=ser.read()
print(x)
text_file.write(x)