График синусоиды из последовательных данных и значения с плавающей точкой
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\time andquenide domain.py", строка 70, в a1.appendleft(float(data*0.000714285714)) TypeError: невозможно умножить последовательность на не-int из введите 'float' Пожалуйста, посмотрите на этот вопрос, он даже важнее первого.