PySide6测试超时进行报警例子

PySide6测试超时进行报警例子

import sys
from PySide6.QtCore import QTimer
from PySide6.QtWidgets import QApplication, QMessageBox, QWidget, QVBoxLayout, QPushButton

# 全局变量
HKname = 0  # 表示相机采集图片状态
result = 0  # 表示算法运算结果状态


class AlarmSystem(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()
        self.setup_timers()

    def init_ui(self):
        # 窗口初始化
        self.setWindowTitle("超时报警系统")
        self.setGeometry(100, 100, 300, 200)

        # 添加布局和按钮
        layout = QVBoxLayout(self)

        self.trigger_hkname_button = QPushButton("触发相机采集完成")
        self.trigger_hkname_button.clicked.connect(self.simulate_hkname)
        layout.addWidget(self.trigger_hkname_button)

        self.trigger_result_button = QPushButton("触发算法结果完成")
        self.trigger_result_button.clicked.connect(self.simulate_result)
        layout.addWidget(self.trigger_result_button)

    def setup_timers(self):
        # 定时器初始化
        self.timer_check = QTimer(self)  # 主定时器
        self.timer_check.timeout.connect(self.check_timeout)

        self.timeout_timer = QTimer(self)  # 超时定时器 (30秒)
        self.timeout_timer.setSingleShot(True)  # 只触发一次
        self.timeout_timer.timeout.connect(self.trigger_alarm)

        # 每秒检查是否需要开始计时
        self.timer_check.start(1000)

    def check_timeout(self):
        global HKname, result

        # 如果图片采集完成 (HKname == 1),启动30秒超时计时器
        if HKname == 1:
            print("图片采集完成,开始计时...")
            HKname = 0  # 重置状态,避免重复触发计时器
            self.timeout_timer.start(5000)  # 开始30秒计时

        # 如果算法结果完成 (result == 1),停止计时器
        if result == 1:
            print("算法结果完成,停止计时器...")
            result = 0  # 重置状态
            self.timeout_timer.stop()

    def trigger_alarm(self):
        # 触发报警
        print("超时未接收到算法结果,发出报警!")
        QMessageBox.warning(self, "报警", "算法结果未在规定时间内完成!")

    def simulate_hkname(self):
        """模拟相机采集完成"""
        global HKname
        HKname = 1
        print("手动触发:相机采集完成信号 (HKname = 1)")

    def simulate_result(self):
        """模拟算法结果完成"""
        global result
        result = 1
        print("手动触发:算法结果完成信号 (result = 1)")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    alarm_system = AlarmSystem()
    alarm_system.show()
    sys.exit(app.exec())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枭玉龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值