Взаимодействие pyqtgraph с командной строкой - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь реализовать интерактивное меню через командную строку в python 3.X для вывода последовательных данных из arduino с помощью pyqtgraph.Я прочитал документацию по Qt, но я просто не могу заставить его работать.Цель состоит в том, что когда пользователь посылает «А», начинается печать, и, наконец, когда он нажимает «В», печать останавливается.Я пытался обернуть таймер в оператор if, но это не сработает, он выскочит в окно и вылетит.Любая помощь будет признательна.

здесь код:

from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
import threading, serial, time


def main():
    while True:
        flag=input('Press A to start plotting, Press B to close the plotting sequence')
        if flag is 'A':
            #Start my plotting sequence
        elif flag is 'B'
            #Close my plotting sequence


app = QtGui.QApplication([])


win = pg.GraphicsWindow()
win.setWindowTitle('Datos de Arduino')

p1 = win.addPlot()
p1.setYRange(0, 5, padding=0)
curva1  = p1.plot()
datos   = [0.0]
data    = [0.0]
fdatos1 = [0.0]
y1 = np.zeros(1000, dtype=float)
raw = serial.Serial('COM6', 9600)
raw.close()
raw.open()
m = 0

def update():
    global curva1, curva2, curva3, m, y1, fdatos1
    with serial_lock:
        datos1 = raw.readline().decode('utf-8')
    #datos1 = datos.split(',')
    fdatos1[0]= float(datos1)
    y1[m] = fdatos1[0]

    if m == 999:
        y1 = np.zeros(1000, dtype=float)
        m = 0
    else:
        m += 1
    curva1.setData(y1)
    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_()
...