我试图从串口绘制实时数据(从arduino板发送),我无法找到任何有用的东西。我已经在这上面了几天,尝试了很多但从未成功过。 我设法使用cat,C和python从端口读取数据,并且所有这些数据都有非常奇怪的结果。昨天猫很好地将数据打印到终端,今天它每次运行时只显示一行或两行。在C中数据非常脏。在python中似乎没问题。虽然不完美,但阅读部分不是问题。 我试图用matplotlib绘制来自python的数据,这种数据的延迟越来越大,这使得这个情节变得毫无用处。我无法让C和gtk工作。我试过python + chaco,但我不知道chaco是如何运作的。我发现自己在不同的语言和模块之间跳跃,以使其工作,但由于我没有工作,我继续跳,没有得到任何解决方案。
现在,我的问题是: 你会建议使用哪种语言,模块,gui-toolkit等?
我知道这是一个普遍的问题,并且最好是要求具体的事情,但我真的迷失了。 感谢。
更新: 我选择python,pyserial和pyqtgraph。串行工作,但图形不是。 更新: 得到它了! 这个例子正在运作。
#!/usr/bin/python
# -*- coding: utf-8 -*-
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
from pyqtgraph.ptime import time
import serial
app = QtGui.QApplication([])
p = pg.plot()
p.setWindowTitle('live plot from serial')
curve = p.plot()
data = [0]
raw=serial.Serial("/dev/ttyACM0",9600)
raw.open()
ptr = 0
def update():
global curve, data, ptr
line = raw.readline()
data.append(int(line))
xdata = np.array(data, dtype='float64')
print xdata
curve.setData(xdata)
ptr += 1
app.processEvents()
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(0)
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
答案 0 :(得分:1)