|
|
|
@ -6,6 +6,7 @@ from matplotlib.backends.qt_compat import QtCore, QtWidgets
|
|
|
|
|
from matplotlib.backends.backend_qt5agg import (FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
|
|
|
|
|
|
|
|
|
|
from matplotlib.figure import Figure
|
|
|
|
|
from PyQt5.QtCore import QThread
|
|
|
|
|
|
|
|
|
|
import matplotlib.ticker as ticker
|
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
@ -25,9 +26,9 @@ class ActualTrend(QtWidgets.QMainWindow):
|
|
|
|
|
|
|
|
|
|
self.varName = varName
|
|
|
|
|
|
|
|
|
|
self._main = QtWidgets.QWidget()
|
|
|
|
|
self.setCentralWidget(self._main)
|
|
|
|
|
layout = QtWidgets.QVBoxLayout(self._main)
|
|
|
|
|
_main = QtWidgets.QWidget()
|
|
|
|
|
self.setCentralWidget(_main)
|
|
|
|
|
layout = QtWidgets.QVBoxLayout(_main)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dynamic_canvas = FigureCanvas(Figure(figsize=(5, 3)))
|
|
|
|
@ -45,26 +46,30 @@ class ActualTrend(QtWidgets.QMainWindow):
|
|
|
|
|
self._timer = dynamic_canvas.new_timer(
|
|
|
|
|
1000, [(self._update_canvas, (), {})])
|
|
|
|
|
self._timer.start()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _update_canvas(self):
|
|
|
|
|
# self.n += 1
|
|
|
|
|
varName = self.varName
|
|
|
|
|
varMM = ModbusVarManage.getByName(varName)
|
|
|
|
|
if varMM:
|
|
|
|
|
minY, maxY = ModbusVarManage.getByName(varName)[-2], ModbusVarManage.getByName(varName)[-1]
|
|
|
|
|
minY = -100
|
|
|
|
|
maxY = 100
|
|
|
|
|
|
|
|
|
|
if not minY or not maxY:
|
|
|
|
|
minY = -100
|
|
|
|
|
maxY = 100
|
|
|
|
|
else:
|
|
|
|
|
minY = float(minY)
|
|
|
|
|
maxY = float(maxY)
|
|
|
|
|
|
|
|
|
|
if varMM:
|
|
|
|
|
minY, maxY = varMM[-2], varMM[-1]
|
|
|
|
|
minY = float(minY)
|
|
|
|
|
maxY = float(maxY)
|
|
|
|
|
|
|
|
|
|
self._dynamic_ax.clear()
|
|
|
|
|
acttime = time.strftime('%H:%M:%S', time.localtime(time.time()))
|
|
|
|
|
# print(acttime)
|
|
|
|
|
if varName != '':
|
|
|
|
|
uid = MBTCPMApp.backend.get('ModBus').decode('utf-8')
|
|
|
|
|
if MBTCPMApp.backend.get('ModBus') is not None:
|
|
|
|
|
uid = MBTCPMApp.backend.get('ModBus').decode('utf-8')
|
|
|
|
|
else:
|
|
|
|
|
return
|
|
|
|
|
# print(uid)
|
|
|
|
|
res = AsyncResult(uid) # 参数为task id
|
|
|
|
|
if res.result:
|
|
|
|
@ -85,8 +90,13 @@ class ActualTrend(QtWidgets.QMainWindow):
|
|
|
|
|
|
|
|
|
|
self._dynamic_ax.plot(pos_list, value_list, 'bo-', linewidth=2)
|
|
|
|
|
# self._dynamic_ax.set_xlim(0,10)
|
|
|
|
|
self._dynamic_ax.set_ylim(minY,maxY)
|
|
|
|
|
self._dynamic_ax.set_ylim(minY, maxY)
|
|
|
|
|
self._dynamic_ax.figure.canvas.draw()
|
|
|
|
|
|
|
|
|
|
def closeEvent(self, event):
|
|
|
|
|
# 判断是否点击了窗口的关闭按钮
|
|
|
|
|
if event.type() == event.Close:
|
|
|
|
|
self._timer.stop()
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
qapp = QtWidgets.QApplication(sys.argv)
|
|
|
|
|