Qt信号与槽执行频繁导致程序崩溃

2023-11-04

问题情景:

  • 使用Qt编写运动控制上位机时,需要读取IO端口信号,并根据读取到的信号将传感器的状态显示在主界面。
  • 由于没办法读取到电平的上升沿或下降沿变化,所以只能在循环内一直读取IO的电平,而IO端口数量比较多,大概有30个。如果读到电平后就发送信号,告知MainWindow更新控件,会导致程序崩溃。

解决方法:

  • 限制信号发送的频率,当IO电平是持续高电平或持续低电平时,此时发送的信号都是无意义的。可以新添加一个temp变量,用来储存上一个电平信号。当读取到电平时,先判断当前电平和temp是否相等,不相等时才告知MainWindow更新控件,比较完成后将读取的电平赋值给temp。
// state读取的电平信号是[0,1],初始化为2可以保证第一次比较一定可以生效。
int temp = 2;
// 2张运动控制卡,每张运动控制卡有16个IO输入端口
for(int cardNo=0; cardNo<2; cardNo++)
{
    for(int port=0; port<16; port++)
    {
        state = dmc_read_inbit(cardNo, port);  // 所有IO低电平有效
        if(state != temp)
        {
            if(state == 0)
            {
                emit sigIOShow(cardNo, port);  // 告诉Mainwindow,传感器灯亮
            }
            else
            {
                emit sigIOHide(cardNo, port);  // 告诉Mainwindow,传感器灯灭
            }
            temp = state;  //更新temp
        }
        else
        {
            continue;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt信号与槽执行频繁导致程序崩溃 的相关文章

  • 从 Qt4 中的文本文件中逐字读取

    我想在 Qt4 中逐字读取一个文本文件 说实话我对它很陌生 我想在另一个文件中每行一个字写入 我可以在 C 中做到这一点 没有任何问题 但是当我尝试在 Qt4 中使用 ifstream 和 ofstream 时 我遇到了错误 这是我的 Qt
  • Qt - 获取互联网上托管的网页的源代码(HTML 代码)

    我想获取网页的源代码 HTML 例如StackOverflow的主页 这是我到目前为止编写的代码 QNetworkAccessManager manager QNetworkReply response manager get QNetwo
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • Qt 安装程序框架 - 如何在卸载时仅删除某些文件和文件夹

    我使用 Qt 安装程序框架 如何确保在卸载时仅删除某些文件或文件夹 而不是像当前那样删除安装文件夹中的所有文件 先感谢您 您可以覆盖默认行为component createOperations对于卸载程序 然后使用手动指定每个卸载路径com
  • 将 QByteArray 从大端转换为小端

    我想我在这里有点不知所措 我尝试了这么简单的事情 我不敢相信没有任何内置的 Qt 使用 Qt 5 6 2 我尝试将 QByteArray 内的数据从大端转换为小端 总是从相同的测试 QByteArray 开始 就像这样 QByteArray
  • 如何使用 ClangCodeModel 插件在 QtCreator 中设置 C++ 标准?

    抱歉 如果这是一个愚蠢的问题 但我已经尝试了几乎所有的方法 现在正在用头撞墙 问题是 带有 Clang 代码模型插件的 QtCreator 4 8 0 beta for Windows 解析我的项目 为 C 98 而实际上它是 C 17 但
  • wkhtmltopdf 修补了 qt 吗?

    我正在尝试将多个 URL 转换为 PDF 但是 当我编译 wkhtmltopdf 或运行时apt get install wkhtmltopdf并尝试一下 它说 错误 此版本的 wkhtmltopdf 是针对未修补的 QT 版本构建的 并且
  • QObject多重继承

    我正在尝试在 C Qt 类中使用 mix 来提供一大堆具有通用接口的小部件 该接口是以这样的方式定义的 如果它被定义为其他小部件类的基类 那么小部件本身将具有这些信号 class SignalInterface public QObject
  • Qt 创建者 4.8.4。 Windows 7 - 64 位安装

    我在 QT 方面遇到了一些困难 我需要在学校使用它来完成一些 GUI 应用程序 我最近完成了以下步骤 1 mingw get inst 20120426 exefrom 来源锻造 http sourceforge net projects
  • 如何将flex和bison与Qt项目集成?

    我正在 git 源代码控制下使用 Qt4 制作 GUI 程序 Github页面 https github com vinayak garg dic sim 项目的一小部分需要扫描和解析 所以我想在项目中使用flex和bison 我能想到3种
  • 从 Qt 更改屏幕分辨率?

    我想更改屏幕分辨率 然后使用一个 ActiveX 控件 Flash 播放器 进入全屏 显然 仅适用于 Windows 的解决方案就可以了 有 Qt api 吗 还是我需要深入研究 winapi 如果是这样 我该在哪里查找 关键字 谢谢您的帮
  • 如何在不同的QT线程中创建一个窗口?

    我有一个应用程序 其中每个线程 主线程除外 都需要创建自己的窗口 我尝试创建一个线程然后调用this gt exec in the run功能 然而 在我接到那个电话之前我就收到了一个错误 ASSERT failure in QWidget
  • QMessageBox::about 可以根据标题长度调整大小吗?

    我想创建一个简单的 关于 对话框 但注意到QMessageBox about不会根据标题的长度调整其大小 由于字体较大 标题通常会更长 至少在我的桌面环境中 仅根据内容调整其大小 有没有办法确保对话框足够大以显示所有标题 我当然可以向 ab
  • 如何使用 qt 库中的调试符号为 qt 5.5 创建开发 shell

    我有一个开发外壳buildInputs条目包括qt55 qtbase 这很好用 今天 我在 qt 库中发生了段错误 我想要带有调试符号的 qt 库 我看了一下nixpkgs pkgs development libraries qt 5 5
  • 无法将 [未定义] 分配给 QColor

    我正在使用 Qt 5 11 构建 运行代码 代码中有QML风格如下 Button style delegate Component id enabledButtonStyle ButtonStyle padding top 0 paddin
  • 如何使用bind将成员函数作为函数指针传递?

    我试图将成员函数作为函数指针传递 这样我就不需要依赖单例或全局函数来处理 Qt 5 中的 Qt 消息 据我所知 我的 std function 是正确的类型 它具有正确的签名 并且绑定应该允许我插入隐式this指针 本质上是将成员函数传递为
  • QGraphicsSimpleTextItem“无效使用不完整类型”

    我的代码如下 指针部件 h QGraphicsSimpleTextItem text 指针控件 cpp void PointerWidget placeNumbers float spacing int currentTickNumber
  • 在另一个中使用 QAbstractListModel

    我在尝试使用 Qt QML 为我的应用程序开发数据模型时遇到问题 我已经用过一个QAbstractListModel能够将海关数据模型从 C 传递到 QML 并且它对于简单模型 例如基于字符串和布尔的模型 来说就像一个魅力 但现在我需要建立
  • 如何通过信号和槽传递参数?

    我的 GUI 包括LineEdit and a 按钮 当 的时候按钮单击后 插槽clicked 叫做 我想在之间建立信号槽关系clicked 作为信号和doSomething 作为插槽 问题是doSomething 无权访问 UI 并且do
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no

随机推荐

  • .NET页面之间传值的几种方式总结

    1 QueryString 当页面上的form以get方式向页面发送请求数据时 web server将请求数据放入一名为QEURY STRING的环境变量中 QeueryString方法从这个变量中取出相应的值 先建立两个WebForm 分
  • FFmpeg通过摄像头实现对视频流进行解码并显示测试代码(新接口)

    在https blog csdn net fengbingchun article details 93975325 中给出了通过旧接口即FFmpeg中已废弃的接口实现通过摄像头获取视频流然后解码并显示的测试代码 这里通过使用FFmpeg中
  • 基于ROS的无人车模型预测控制(MPC)C++实现

    基于ROS的无人车模型预测控制 MPC C 实现 最近在做毕业设计的控制器部分 网上关于cpp实现模型预测控制的资料很少 基本都是Matlab Simulink实现 顺手写一下学习过程 1 建模方法 模型预测控制的基本原理本文不作赘述 可以
  • CGSS2015数据及对应问卷

    根据公开数据辛苦整理 形成CGSS2015数据及对应问卷 中国综合社会调查 Chinese General Social Survey CGSS 始于2003年 是我国最早的全国性 综合性 连续性学术调查项目 CGSS系统 全面地收集社会
  • Nginx+keepalived 双机热备(主从模式)

    负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的 做好负载均衡架构 可以实现故障转移和高可用环境 避免单点故障 保证网站健康持续运行 关于负载均衡介绍 可以参考 linux负载均衡总结性说明 四层负载 七层负载 由于
  • CentOS7.9安装elasticsearch的Head插件

    目录 1 下载安装包 2 安装依赖环境 2 1 安装node 2 2 安装grunt 3 安装head插件 1 下载安装包 CentOS7 9安装elasticsearch 8 3 1 kibana 8 3 1是以下文档安装的 CentOS
  • 【supplemental】On_Distillation_of_CVPR_2023_supplemental

    supplemental On Distillation of CVPR 2023 supplemental 一 前言 A Results overview B Pixel space distillation B 1 Teacher mo
  • 文件快速拷贝工具FastCopy

    文件快速拷贝工具FastCopy 大家在使用电脑的时候经常用到复制 粘贴 删除等命令 对于小文件来讲操作瞬间完成 可对于大文件可能少则数分钟甚至数小时 比如将Offices2003安装程序从硬盘往U盘上拷贝 则经历了一个半小时 时间是多么的
  • Python爬虫:英雄联盟近期战绩查询

    c语言选手早已听说Python的方便和其各大爬虫模块的实用性 于是暑假无所事事的我决定在没有系统学习Python语法的情况下 一边写一个和自己兴趣有关的爬虫 一边学习一下Python方便的语法 体验Python的方便之处 一 用到的语法 1
  • QT 信号槽 lambda

    QCheckBox checkBox connect checkBox QCheckBox clicked this emit this gt slot check btn connect checkBox static cast
  • 通过AT指令访问SIM卡

    不借助读写卡工具 直接通过AT指令访问SIM卡 一 命令类型 1 AT CRSM 对于SIM卡 参考3GPP 51 011 对于USIM卡 参考ETSI TS 102 221 2 AT CSIM 参考3GPP TS 27 007 二 常用命
  • Mybatis学习笔记1:CRUD与配置解析

    文章目录 1 简介 1 1 什么是Mybatis 1 2 持久化 1 3 持久层 1 4 为什么需要Mybatis 2 第一个Mybatis程序 2 1 搭建环境 2 2 创建一个模块 2 3 编写代码 2 4 测试 2 5 作用域 Sco
  • FPGA自学之路2(计数器or6分频器(偶分频))

    先说一个今天碰到的modelsim报错 原因在于代码模块名和文件名不一致 改成一致就不报错了 下面是modelsim波形图时间间隔调整 时间间隔 一般调成ns 下图是设置波形图数字进制 b是二进制 d是十进制 h是十六进制 下图左边红线是加
  • spring boot 内部执行 spark submit

    最近项目要用到大数据 边学边搞项目 一个坑接着一个坑地踩 好在头铁 总能柳暗花明 spark submit 提交任务到 yarn 集群执行官方资料写的很清楚 如果是用脚本方式执行看看说明分分钟搞定的 可偏偏好死不死 设计的方案是在 spri
  • springboot怎么返回ajax,springbootajax查看直接能够返回查询页面

    Controller RequestMapping activity public class ActivityController javascript Autowired private ActivityService activity
  • 大数据技术——HBase安装配置&DDL&DML操作

    HBase文章目录 1 HBase 安装 1 1 HBase下载 1 2 HBase安装 1 3 HBase 初始配置 2 配置高可用并且群起集群 2 1 HBase高可用 2 2 群起集群 2 3 进入HBase客户端 3 DDL DML
  • C++搭配PCL在点云里画直线的实现

    一个很简单的小功能 在点云里画自己给定点之间的连线 我这里实现的是把二维的点云用一个正方体围起来 并等分为n n个格子 代码例子如下所示 我这里的是三维的点云 然后将z坐标置0了 定义四个边界点 水平的最大最小 竖直的最大最小 float
  • 给视频嵌入字幕的神器 MKVToolNix

    我们经常会下载一些视频是不带字幕的 也就是俗称的生肉 然后下载一些外挂字幕 其实我们可以自己把字幕压缩进视频里 我推荐一个 免费开源的给视频加字幕的软件 MKVToolNix 下载地址 https www fosshub com MKVTo
  • Druid数据库连接

    我们知道 应用系统最频繁 最主要的操作还是数据库的操作 所以数据库的性能和安全对于整个系统平台的重要性不言而喻 为了提高数据库性能 我们可以使用数据库连接池 有时候我们需要增加一些列的日志或是数据库性能监控工具来确保数据库的性能 同时还得防
  • Qt信号与槽执行频繁导致程序崩溃

    问题情景 使用Qt编写运动控制上位机时 需要读取IO端口信号 并根据读取到的信号将传感器的状态显示在主界面 由于没办法读取到电平的上升沿或下降沿变化 所以只能在循环内一直读取IO的电平 而IO端口数量比较多 大概有30个 如果读到电平后就发