首页 > 编程语言 >解决Qt运行程序后,可用串口变化问题

解决Qt运行程序后,可用串口变化问题

时间:2023-02-17 14:34:56浏览次数:30  
标签:portStringList Qt 可用 comSwitchBtn currentCOM ui 串口 com

1.Qt解决运行程序后,可用串口变化问题

2.设置定时器,定时刷新可用串口

//定义全局变量
QSerialPort *serialPort;
QTimer *timer;
QStringList portStringList;
QString currentCOM = "";

//在主函数
timer = new QTimer; //定时扫描和更新串口
connect(timer,&QTimer::timeout,this,&Widget::showValidPort);
//实时更新端口号
timer->start(1000);
//每1000ms定时检测串口状态
serialPort = new QSerialPort;
//实例化串口对象
foreach(const QSerialPortInfo &info,
QSerialPortInfo::availablePorts()) //扫描可用串口
portStringList += info.portName();
ui->com->addItems(portStringList);
//更新并检测串口函数实现
void showValidPort()
{
QStringList newPortStringList;
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
newPortStringList += info.portName();
if(newPortStringList.size() != portStringList.size())
{
portStringList = newPortStringList;
ui->com->clear();
ui->com->addItems(portStringList);
}
if(currentCOM != ui->com->currentText()) //串口突然断开连接了
{
currentCOM = ui->com->currentText();
if("关闭" == ui->comSwitchBtn->text())
{
on_comSwitchBtn_clicked();
}
}
}


void on_comSwitchBtn_clicked()
{
if("打开" == ui->comSwitchBtn->text())
{
currentCOM = ui->com->currentText();
serialPort->setPortName(currentCOM); //获取串口号
if(serialPort->open(QIODevice::ReadWrite)) //如果打开串口成功
{
//...
}
}
else if("关闭" == ui->comSwitchBtn->text())
{
ui->comSwitchBtn->setText("打开");
serialPort->close();
}
}

解决Qt运行程序后,可用串口变化问题_串口

解决Qt运行程序后,可用串口变化问题_串口_02

标签:portStringList,Qt,可用,comSwitchBtn,currentCOM,ui,串口,com
From: https://blog.51cto.com/u_15515702/6064045

相关文章

  • Qt第一个Qt程序
    目录Qt第一个窗口程序1.创建项目2.创建按钮Qt第一个窗口程序1.创建项目2.创建按钮修改mainwindow.cpp#include"mainwindow.h"#include"ui_mainwindow.h"#......
  • 类的静态成员函数调用该类的非静态成员函数(Qt使用Halcon生成的程序)
    在Qt使用Halcon生成的程序时遇到的问题。由于Halcon中的结果是要传到Qt中的,所以将生成的程序都放到了类QtOCR中(该类继承QObject)。而Halcon线程生成的线程函数是静态的,并且......
  • 选择一个有效的选项。xxx不在可用的选项中。
    选择一个有效的选项。xxx不在可用的选项中。原因:choice选项的索引类型与字段的类型不匹配。说明:choice选项的索引类型与字段的类型,不能前面是int,后面是char。错误示例:c......
  • golang串口通讯
    com.gopackagemainimport( "encoding/hex" "errors" "io" "strings" "time" "github.com/jacobsa/go-serial/serial" log"github.com/sirupsen/logrus")/......
  • 嵌入式驱动开发之spi---spi串口通信调试
    一.概念SPI是SerialPeripheralInterface(串型外部接口)的缩写。SPI接口有4根PIN脚,分别是:        *SPICLK  :用于传输数据的同步时钟        ......
  • ChatGPT不可用解决方案 Not available OpenAI's services are not available in your
    不知道怎么注册ChatGPT的请参考 https://realhohong.cnblogs.com/p/17114845.html    ChatGPT不可用解决方案NotavailableOpenAI'sservicesarenotavail......
  • QT基础学习 - 总结
    一、学习规划与必要知识点总结1、QT的下载与安装;1)下载:进入官网,下载QT在线下载工具(QT5.15后都必须在线下载):2)安装参考博客: a. (86条消息)Windows10在线安装Qt5.15和......
  • Qt编写视频监控系统71-外网访问摄像头等设备(获取各种信息及拉流)
    一、前言最近遇到个需求是通过外网接入摄像机或者NVR,通用的做法是将视频流推流到服务器,然后拉取rtmp视频流,这样就多了服务器的要求,而且实现的功能有限比如不能直接用onvif......
  • QT中调用不同cpp文件的变量或者函数
    有时候会遇到一个问题,在QT中,需要使用另一个文件的函数或者对象,但是没办法直接使用。一般是在其他类中想使用主类中的函数或者变量方法1:在需要使用的文件中声明这个类, ......
  • pyqt5 下拉复选框的实现
    PyQt5创建下拉复选框总体目录结构要先自定义下拉复选框类参考:自定义实现PyQt5下拉复选框ComboCheckBox#下拉复选框测试/combocheckbox.pyfromPyQt5.QtWidgets......