2 Star 9 Fork 7

程序员锡哥/serial-monitor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
serial_monitor.py 4.15 KB
一键复制 编辑 原始数据 按行查看 历史
devis 提交于 2021-09-23 10:34 . 完成基础功能
# coding:utf-8
import time
from pathlib import Path
from shutil import copyfile
from PyQt5.QtGui import QTextCursor
from PyQt5.QtWidgets import QMainWindow, QMessageBox, QFileDialog
import SerialMonitor
import ui_serial_monitor
import setting_dialog
class SerialMonitorWindow(QMainWindow, ui_serial_monitor.Ui_MainWindow): # 继承界面类及QMainWindow类
def __init__(self):
super().__init__()
self.setupUi(self)
self.StartListen.triggered.connect(self.onClickStartListen)
self.StopListen.triggered.connect(self.onClickStopListen)
self.action.triggered.connect(self.onQuickListen)
self.SaveSerialData.triggered.connect(self.onSaveClickListen)
self.Clear.triggered.connect(self.clearClickListen)
self.monitor: SerialMonitor.SerialMonitor
self.physicalPortName = ""
self.physicalPortRate = 0
self.virtualPortName = ""
self.virtualPortRate = 0
self.isMonitor = False
self.filename = ""
def onClickStartListen(self):
if self.isMonitor:
self.monitor.Stop()
dialog = setting_dialog.SettingDialog()
dialog.exec_()
if dialog.IsSetting:
self.physicalPortName = dialog.getPhysicalPortName()
self.physicalPortRate = int(dialog.getPhysicalPortRate())
self.virtualPortName = dialog.getVirtualPortName()
self.virtualPortRate = int(dialog.getVirtualPortRate())
path = Path("./data")
if not path.is_dir():
path.mkdir()
self.filename = "./data/trace_" + time.strftime("%Y%m%d%H%M%S", time.localtime()) + ".txt"
self.monitor = SerialMonitor.SerialMonitor(
self.filename, self.monitorMessage,
dialog.getPhysicalPortName(), dialog.getPhysicalPortRate(),
dialog.getVirtualPortName(), dialog.getVirtualPortRate())
self.isMonitor = True
self.textBrowser.setText("")
self.monitor.Start()
def onClickStopListen(self):
self.isMonitor = False
if self.monitor is not None:
self.monitor.Stop()
def onQuickListen(self):
if len(self.physicalPortName)== 0 or len(self.virtualPortName) == 0:
dialog = setting_dialog.SettingDialog()
dialog.exec_()
if dialog.IsSetting:
self.physicalPortName = dialog.getPhysicalPortName()
self.physicalPortRate = int(dialog.getPhysicalPortRate())
self.virtualPortName = dialog.getVirtualPortName()
self.virtualPortRate = int(dialog.getVirtualPortRate())
path = Path("./data")
if not path.is_dir():
path.mkdir()
self.filename = "./data/trace_" + time.strftime("%Y%m%d%H%M%S", time.localtime()) + ".txt"
self.monitor = SerialMonitor.SerialMonitor(
self.filename, self.monitorMessage,
dialog.getPhysicalPortName(), dialog.getPhysicalPortRate(),
dialog.getVirtualPortName(), dialog.getVirtualPortRate())
self.textBrowser.setText("")
self.monitor.Start()
else:
path = Path("./data")
if not path.is_dir():
path.mkdir()
self.filename = "./data/trace_" + time.strftime("%Y%m%d%H%M%S", time.localtime()) + ".txt"
self.monitor = SerialMonitor.SerialMonitor(
self.filename, self.monitorMessage,
self.physicalPortName, self.physicalPortRate,
self.virtualPortName, self.virtualPortRate)
self.textBrowser.setText("")
self.monitor.Start()
def onSaveClickListen(self):
filename, filetype = QFileDialog.getSaveFileName(self, '保存文件', './data', "ALL (*.*)")
if filename:
if self.isMonitor:
self.monitor.Stop()
copyfile(self.filename, filename)
def monitorMessage(self, message):
self.textBrowser.append(message[:len(message)-1])
self.textBrowser.moveCursor(QTextCursor.End)
def clearClickListen(self):
self.textBrowser.clear()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/msgy/serial-monitor.git
git@gitee.com:msgy/serial-monitor.git
msgy
serial-monitor
serial-monitor
master

搜索帮助