从串行数据绘制正弦波并绘制浮点值

时间:2014-07-21 09:37:36

标签: python-2.7 matplotlib floating-point sine

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' 请看这个问题,它比第一个问题更重要。

0 个答案:

没有答案