首先需要安装依赖库
pip install pyserial
pip install pyqtgraph
pip install PyQt5
完整代码如下:有需要的可以拿去;顺便帮我点个赞,谢谢
import sys
import serial
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
import pyqtgraph as pg
from pyqtgraph.Qt import QtGui, QtCore
class SerialPlotter(QMainWindow):
def __init__(self, port='COM3', baudrate=115200, update_interval=50): # 设置串口信息
super().__init__()
self.ser = serial.Serial(port, baudrate)
self.update_interval = update_interval
self.init_ui()
def init_ui(self):
self.central_widget = QWidget(self)
self.setCentralWidget(self.central_widget)
self.plot_widget = pg.PlotWidget(self)
self.central_layout = QVBoxLayout(self.central_widget)
self.central_layout.addWidget(self.plot_widget)
self.curve = self.plot_widget.plot(pen='b')
self.data = []
self.timer = QtCore.QTimer(self)
self.timer.timeout.connect(self.update_plot)
self.timer.start(self.update_interval)
def update_plot(self):
# 从串口读取一行数据
data = self.ser.readline().decode('utf-8').strip().replace('r', '') # 这里需要根据自己的数据进行相应的替换
# data = ''.join(char for char in data if char.isdigit()) # 保证纯数字,不能包含字符
data = float(data)
print(data)
try:
value = int(data)
except ValueError:
return
self.data.append(value)
# 限制显示的数据点数量,避免图形无限增长
max_points = 100 # 其实这个可以通过鼠标改变
if len(self.data) > max_points:
self.data = self.data[-max_points:]
self.curve.setData(self.data)
def closeEvent(self, event):
self.ser.close()
event.accept()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = SerialPlotter()
window.setGeometry(100, 100, 800, 300) # 设置显示窗口大小: x轴, y轴, 宽高
window.setWindowTitle('Serial Plotter')
window.show()
sys.exit(app.exec_())