import sys
import serial
import numpy as np
import matplotlib.pyplot as plt
from collections import deque
port = "COM11"
baud = 9600
timeout=1
ser = serial.Serial()
ser.port = port
ser.baudrate = baud
ser.timeout = timeout
a1 = deque([0.0]*100)
#ax = plt.axes(xlim=(0, 100), ylim=(0, 1000))
line, = plt.plot(a1)
plt.ion()
plt.ylim([0,1000])
try:
ser.open()
except:
sys.stderr.write("Error opening serial port %s\n" % (ser.portstr) )
sys.exit(1)
#ser.setRtsCts(0)
while 1:
# Read from serial port, blocking
data = ser.read(1)
# If there is more than 1 byte, read the rest
n = ser.inWaiting()
data = data + ser.read(n)
#sys.stdout.write(data)
print(a1)
a1.appendleft((data))
datatoplot = a1.pop()
line.set_ydata(a1)
plt.draw()
我正在获取串行数据的时域图,但我想将我从串口接收的数据转换为正弦波然后对其进行分析。有什么可以做的吗? 感谢
还有一个问题: 我想绘制浮点值,所以我将数据乘以0.000714285714,然后尝试绘图,但我得到了这个错误。 Traceback(最近一次调用最后一次): 文件" C:\ Python27 \时间和频率domain.py",第70行,in a1.appendleft(浮点(数据* 0.000714285714)) TypeError:不能将序列乘以非int类型' float' 请看这个问题,它比第一个问题更重要。