我不太精通编程,所以请耐心等待。编程项目作为一种爱好(我是物理专业的)。无论如何,尝试接收串行数据,然后使用来自 Arduino Uno 的 matplotlib 使用 ADXL345 Breakout Trip-Axis Accelerometer 进行绘图。我目前不需要它是动态的(实时反馈)。这是我将串行数据写入文件的代码,性能良好。
import serial
filepath = 'C:/Users/Josh/Documents/Programming/'
outfilename =filepath + 'data.txt'
outfile = open(outfilename,"w")
numpoints = 1000
ser = serial.Serial('COM4',9600)
for i in range(numpoints):
inString=ser.readline()
print inString
outfile.write(inString)
ser.close()
outfile.close()
这创建了一个相当易于访问的文本文件,我想将其转换为包含每个轴(x、y、z)的三个子图的 matplotlib 图形。我从 python 得到一个 File IO errno 2 ,说它找不到该文件(不存在),但它确实找到了,而且就我有限的知识而言,路径是正确的。非常感谢任何帮助。这是我糟糕的尝试的相关部分:
import numpy as npy
import matplotlib.pyplot as plt
global y0,y1,y2
increment_size = 8000
datasample_size = 16000
filepath = ("C:\Users\Josh\Documents\Programming\data.txt")
infile = filepath + 'data.txt'
infile = open("data.txt","r")
singleline = infile.readline()
asciidata = singleline.split()
asciidata[0]=asciidata[0][3:] #strip three bytes of extraneous info
y0=[int(asciidata[0])]
y1=[int(asciidata[1])]
y2=[int(asciidata[2])]
最佳答案
您的文件路径是完整的文件路径,而不是目录。然后,您将添加 'data.txt'
,您需要将代码更改为:
filepath = 'C:\\Users\\Josh\\Documents\\Programming\\'
infile = filepath + 'data.txt'
infile = open(infile,"r")
在 python 中,'\' 用于转义字符,因此要拥有实际的 '\',您必须使用 '\\'。
或者,您可以(并且通常应该)使用 os.path.join
将目录和文件连接在一起。在这种情况下,您的代码将变为:
from os.path import join
filepath = 'C:\\Users\\Josh\\Documents\\Programming'
infile = join(filepath, 'data.txt')
infile = open(infile,"r")
关于python - 加速度计数据写入文件,然后绘制 Matplotlib 图形(3 个子图 [x, y, z]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22488993/