Qt 下位机串口模拟器

使用 vspd 创建虚拟配对串口,Qt 实现下位机串口模拟器,便于上位机开发及实时调试,适用字符串格式上下位机串口通信,数据包格式需增加自定义解析处理。

通过以下链接下载 vspd 安装包,进行 dll 破解。

链接: https://pan.baidu.com/s/1vMgZKbdx9TF1ZB1QD1vQhg 提取码: 6is9

通过 Add pair 增加一对虚拟串口,vspd 内部已实现串口数据双向关联,直接当成已物理连接的串口使用即可,Add pair 后 vspd 可以关掉,以后使用虚拟串口无需再打开 vspd。

上位机连接配对串口的其中一个,下位机串口模拟器连接另一个。搭建 Qt 环境的基本串口工程,串口模拟器收到上位机命令后,模拟实际业务执行返回对应响应消息。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QDateTime>
#include <QTimer>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QFont font;font.setPixelSize(16);setFont(font);setWindowTitle(QStringLiteral("下位机串口模拟器"));const QList<QSerialPortInfo> ports = QSerialPortInfo::availablePorts();for (const QSerialPortInfo &portInfo : ports){ui->comboBox->addItem(portInfo.portName());}ui->comboBox->setCurrentText("COM12");ui->label->setText(QStringLiteral("<font color=black>●</font>"));QTimer::singleShot(0, this, SLOT(on_pushButton_clicked()));
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::receiveData()
{mReceivedData.append(mSerial.readAll());QString tmp = mReceivedData;mReceivedData.clear();ui->textBrowser->append(QStringLiteral("%1 接收:%2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz")).arg(tmp));if (tmp == "cmd\r\n"){sendData("cmd--\r\n");}else if (tmp == "cmd2\r\n"){sendData("cmd2--\r\n");}
}void MainWindow::sendData(QString txt)
{QtSleepSec(1);mSerial.write(txt.toUtf8().data());ui->textBrowser->append(QStringLiteral("%1 回复:%2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz")).arg(txt));
}void MainWindow::on_pushButton_clicked()
{mSerial.setPortName(ui->comboBox->currentText());mSerial.setBaudRate(115200);mSerial.setDataBits(QSerialPort::Data8);mSerial.setParity(QSerialPort::NoParity);mSerial.setStopBits(QSerialPort::OneStop);mSerial.setFlowControl(QSerialPort::NoFlowControl);if (mSerial.open(QIODevice::ReadWrite)){ui->label->setText(QStringLiteral("<font color=green>●</font>"));connect(&mSerial, SIGNAL(readyRead()), this, SLOT(receiveData()));ui->pushButton->setEnabled(false);}else{ui->label->setText(QStringLiteral("<font color=red>●</font>"));}
}void MainWindow::on_pushButton_2_clicked()
{if (mSerial.isOpen()){mSerial.close();}ui->pushButton->setEnabled(true);ui->label->setText(QStringLiteral("<font color=black>●</font>"));
}void MainWindow::on_pushButton_3_clicked()
{ui->textBrowser->clear();
}void MainWindow::QtSleepSec(unsigned int sec)
{QTime dieTime = QTime::currentTime().addSecs(sec);while (QTime::currentTime() < dieTime){QCoreApplication::processEvents(QEventLoop::AllEvents, 100);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 虚拟滚动 vue-virtual-scroller RecycleScroller

vue 3 https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/README.md vue 2 https://github.com/Akryum/vue-virtual-scroller/tree/v1/packages/vue-virtual-scroller npm install --save vue-virtual-scrollernextmain.js // 虚拟滚…

密钥登录服务器

1. 生成 SSH 密钥对 如果您还没有生成密钥对&#xff0c;可以使用以下命令生成&#xff1a; ssh-keygen 在 root 用户的家目录中生成了一个 .ssh 的隐藏目录&#xff0c;内含两个密钥文件&#xff1a;id_rsa 为私钥&#xff0c;id_rsa.pub 为公钥。 在提示时&#xff0c;您可…

30天开发操作系统 第 11 天 --制作窗口

前言 在harib07d中鼠标移动到右侧后就不能再往右移了,大家有没有觉得别扭?没错,在Windows 中&#xff0c;鼠标应该可以向右或向下移动到画面之外隐藏起来的&#xff0c;可是我们的操作系统却还不能实现这样的功能&#xff0c;这多少有些遗憾。 这是为什么呢?我们还是先来看一…

物理知识1——电流

说起电流&#xff0c;应该从电荷说起&#xff0c;而说起电荷&#xff0c;应该从原子说起。 1 原子及其结构 常见的物质是由分子构成的&#xff0c;而分子又是由原子构成的&#xff0c;有的分子是由多个原子构成&#xff0c;有的分子只由一个原子构成。而原子的构成如图1所示。…

Android性能分析工具的比较

背景介绍 Systrace、Perfetto和Android Benchmarking Framework都是用于性能分析和优化的工具&#xff0c;但它们各自的用途、功能范围和适用场景有所不同。以下对它们进行详细的比较。 通常一次较完整的性能分析过程需要多工具的配合使用&#xff0c;往复迭代&#xff1a; …

Jupyter在运行上出现错误:ModuleNotFoundError: No module named ‘wordcloud‘

问题分析&#xff1a;显示Jupyter未安装这个模板 解决办法&#xff1a;在单元格内输入&#xff1a;!pip install wordcloud

大模型WebUI:Gradio全解系列8——Additional Features:补充特性(下)

大模型WebUI&#xff1a;Gradio全解系列8——Additional Features&#xff1a;补充特性&#xff08;下&#xff09; 前言本篇摘要8. Additional Features&#xff1a;补充特性8.5 嵌入托管 Spaces8.5.1 使用 Web Components 嵌入1. 嵌入步骤2. 定义嵌入的外观和行为 8.5.2 使用…

持续学习入门

参考视频&#xff08;一&#xff09; 【学无止境&#xff1a;深度连续学习】 背景 更新新的数据时&#xff0c;数据异步输入&#xff0c;会有灾难性遗忘 现有解决策略 &#xff08;1&#xff09;引入正则约束&#xff08;2&#xff09;设计合适的动态模型架构 &#xff…

【Cocos TypeScript 零基础 2.1】

目录 cocos常识新建动画添加组件 cocos 下载就不讲了,多的很 cocos 界面设置中文 新建一个2D项目 SIKI_学院_点击跳转 常识 竖屏 宽720 高1280 如果背景图确定是竖屏也可以根据背景图片大小来确定项目宽高 鼠标功能 左键 选中 滚轮 放大缩小 右键 移动视角位置 场景 双击…

局域网中单台交换机VLAN应用

网络拓扑 其中交换机接口类型都为access接口。 Ethernet 0/0/1 VLAN ID为10 Ethernet 0/0/2 VLAN ID为10 Ethernet 0/0/5 VLAN ID为20 Ethernet 0/0/6 VLAN ID为20 Host-1 ip为192.168.64.11/24 Host-2 ip为192.168.64.12/24 Host-3 ip为192.168.64.21/24 Host-4 ip为192.168…

Harbor仓库部署安装、向仓库推送,拉取镜像、容器的基础使用(超级详细,非常透彻)

Harbor 环境搭建笔记 作为新手&#xff0c;在搭建 Harbor 环境的过程中&#xff0c;我参考了大量资料&#xff0c;学到了很多宝贵的知识&#xff0c;但也遇到了不少挑战。虽然目前这套环境仅在测试环境中成功运行&#xff0c;但仍有许多细节需要完善。记录这些经验不仅有助于个…

活动预告 |【Part2】 Azure 在线技术公开课:迁移和保护 Windows Server 和 SQL Server 工作负载

课程介绍 通过 Microsoft Learn 免费参加 Microsoft Azure 在线技术公开课&#xff0c;掌握创造新机遇所需的技能&#xff0c;加快对 Microsoft 云技术的了解。参加我们举办的“迁移和保护 Windows Server 和 SQL Server 工作负载”活动&#xff0c;了解 Azure 如何为将工作负载…

PP模块部分BAPI函数

工艺路线 BAPI_ROUTING_CREATE 创建工艺路线 BAPI_ROUTING_EXISTENCE_CHECK 检查工艺路线是否存在 参考操作集 BAPI_REFSETOFOPERATIONS_CREATE 创建参考操作集 BAPI_REFSETOFOPR_EXISTENCE_CHK 检查参考操作集是否存在 计划订单 BAPI_PLANNEDORDER_CREATE 创建计划订单 BAPI…

nature reviews genetics | 需要更多的针对不同种族的癌症基因组图谱研究,促进精准治疗和维护治疗公平权益

–https://doi.org/10.1038/s41576-024-00796-w Genomic landscape of cancer in racially and ethnically diverse populations 研究团队和单位 Ulrike Peters–Public Health Sciences Division, Fred Hutchinson Cancer Center Claire E. Thomas–Public Health Scienc…

两个等号和三个等号(待查资料)

1太癫了&#xff0c;居然时要才行&#xff0c;都不行 2. 三等号的结果 .。。。。毁灭吧

SpringCloud源码分析-Gateway

Gateway核心原理&#xff0c;请求经过一系列的责任链最后到达服务端。

大模型—Ollama将Python函数作为参数传递,增强函数调用功能

Ollama将Python函数作为参数传递,增强函数调用功能 在最新版本的Ollama Python库中,现在可以将函数作为工具提供。该库现在也全面支持类型提示,并添加了新的例子。 开始使用 首先安装或升级Ollama Python库: pip install -U ollama将Python函数作为工具传递 定义一个Py…

智能商业分析 Quick BI

Quick BI 是阿里云提供的一款智能商业分析&#xff08;BI&#xff09;工具&#xff0c;旨在帮助企业快速获取业务洞察、优化决策过程、提升数据分析效率。通过强大的数据可视化和分析功能&#xff0c;Quick BI 能够帮助用户轻松连接多种数据源、创建多维度的报表和仪表盘&#…

折旧后将成本中心折旧费调整到订单中

背景&#xff1a;设备原作为通用设备&#xff0c;按成本中心折旧&#xff0c;在12月月结正常折旧后才明确为专用设备&#xff0c;需要按内部订单折旧。 问&#xff1a;折旧能不能冲销。 回复&#xff1a; 在SAP中&#xff0c;折旧凭证是无法直接冲销的。如果折旧计提有误&#…

开源的Vue低代码表单设计器 form-create-designer v3.2.9 版本发布,新增10多种功能

form-create-designer 是一款开源的低代码表单设计器&#xff0c;通过数据驱动表单渲染。可以通过拖拽的方式快速创建表单&#xff0c;提高开发者对表单的开发效率&#xff0c;节省开发者的时间。并广泛应用于在政务系统、OA系统、ERP系统、电商系统、流程管理等领域。 项目采…