QT上位机的学习

 后面又该找工作了,这块的内容也需要好好学习!

QT 篇 QT上位机串口编程-CSDN博客

(1)可以通过安装虚拟串口来模拟串口通信的情况

发现我之前安装过(9.0):

可以生成虚拟串口,无需实际硬件串口就可以实现同一台电脑上串口模拟通信。

(但好像用不了,还是用人家的吧)(7.2)

如何进行虚拟串口测试呢?

串口模拟工具实现测试-CSDN博客

安装了这个软件:

好像是可以了,但我不是很理解。

什么是串口通信呢?

波特率是什么?

数据位,校验位,停止位。

串口通信详解-CSDN博客

串行通信: 

同一时刻,只能传输一个bit位的信号,只需要一根信号线。

异步串行通信:发送方和接收方,使用各自的时钟控制数据发送和数据接收。

(为使双方收发协调,要求双方时钟尽可能一致)

串口通信通常是:异步串行通信总线(两条数据线)(全双工)

串口发送一串数据不是连续发送,而是一个字节一个字节发送的。

这是为了防止接收和发送的累计误差。

编程:

QT       +=serialport

#include <QSerialPort> //访问串口的库

#include <QSerialPortInfo> //查询串口信息的库

 QSerialPort *serialport;serialport = new QSerialPort(this);
    QList<QSerialPortInfo> ports=QSerialPortInfo::availablePorts();for(int i=0;i<ports.count();i++){QSerialPortInfo info=ports.at(i);qDebug()<<"串口"<<i+1<<":"<<info.portName();}

设置串口名称 

serialport->setPortName(name);
if (!serialport->open(QIODevice::ReadWrite)){qDebug()<<"错误,串口无法打开,可能被占用!";QMessageBox::about(this,"错误","串口无法打开,可能被占用!");serialport->close();return ;}

设置波特率(通常是115200) 

 serialport->setBaudRate(baudRate);

设置停止位(高电平)

serialport->setStopBits(QSerialPort::OneStop);
serialport->setStopBits(QSerialPort::TwoStop);

Unknown number of stop bits. This value is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code.

未知的停止位数。该值被淘汰了。它被提供来维持旧代码工作。强烈建议新代码中别用它了。

设置数据位 

serialport->setDataBits(QSerialPort::Data5);

设置奇偶位(校验位)

serialport->setParity(QSerialPort::NoParity);
serialport->setParity(QSerialPort::OddParity);
serialport->setParity(QSerialPort::EvenParity); 

数据流量控制(不控制)

serialport->setFlowControl(QSerialPort::NoFlowControl) ;

硬件控制,软件控制 

接收数据

    connect(serialport,SIGNAL(readyRead()),this,SLOT(serialPortReadyRead()));
void MainWindow::serialPortReadyRead()
{QByteArray temp = serialport->readAll();  
}

发送数据

QByteArray buff;
//写入数据
serialport->write(buff);

示例:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QSerialPort>			//访问串口的库
#include <QSerialPortInfo>		//查询串口信息的库
#include <QDebug>				//用于调试打印输出的库
namespace Ui {
class widget;
}class widget : public QWidget
{Q_OBJECTpublic:explicit widget(QWidget *parent = 0);~widget();
public slots:void serialPortReadyRead();
private slots:void on_pushButton_clicked();private:Ui::widget *ui;QSerialPort *serialport;
};#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
widget::widget(QWidget *parent) :QWidget(parent),ui(new Ui::widget)
{ui->setupUi(this);serialport = new QSerialPort(this);connect(serialport,SIGNAL(readyRead()),this,SLOT(serialPortReadyRead()));QList<QSerialPortInfo> ports=QSerialPortInfo::availablePorts();for(int i=0;i<ports.count();i++){QSerialPortInfo info=ports.at(i);qDebug()<<"串口"<<i+1<<":"<<info.portName();}QString name="COM2";serialport->setPortName(name);if (!serialport->open(QIODevice::ReadWrite)){qDebug()<<"错误,串口无法打开,可能被占用!";QMessageBox::about(this,"错误","串口无法打开,可能被占用!");serialport->close();return ;}int baudRate=115200;serialport->setBaudRate(baudRate);serialport->setStopBits(QSerialPort::OneStop);serialport->setDataBits(QSerialPort::Data8);serialport->setParity(QSerialPort::NoParity);serialport->setFlowControl(QSerialPort::NoFlowControl);
}widget::~widget()
{delete ui;
}void widget::serialPortReadyRead()
{QByteArray temp = serialport->readAll();qDebug()<<"recv:"<<temp;
}void widget::on_pushButton_clicked()
{QByteArray buff=(ui->lineEdit->text().toLocal8Bit());//写入数据serialport->write(buff);
}

效果:

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

电路笔记 : 电容电阻大小表示(103、104、151、2R5、R15的含义)

电容电阻大小表示 电阻 数字索位标称法 数字索位标称法就是在电阻体上用三位数字来标明其阻值。它的第一位和第二位为有效数字&#xff0c;第三位表示在有效数字后面所加“0”的个数.这一位不会出现字母。如果阻值是小数.则用“R”表示“小数点”.并占用一位有效数字&#xf…

【51单片机普中板子74LS138+245+573可调时钟整点蜂鸣中级应用】2022-12-7

缘由用51单片机普中开发板实现数字时钟-嵌入式-CSDN问答 #include "reg52.h" //定义按键 sbit key0P3^0; sbit key1P3^1; sbit key2P3^2; sbit key3P3^3; //定义数码管位驱运位 sbit L1P2^2; sbit L2P2^3; sbit L3P2^4; sbit beepP2^5; unsigned char code ShuMaGua…

微调Mistral 7B以实现命名实体识别 (NER)

文章来源&#xff1a;fine-tuning-mistral-7b-for-named-entity-recognition-ner 2024 年 4 月 19 日 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;命名实体识别&#xff08;NER&#xff09;被认为是一项关键任务&#xff0c;应用范围广泛&#xff0c;包括信息…

tensorflow报错

参考 TensorFlow binary is optimized to use available CPU instructions in performance-critical operations._this tensorflow binary is optimized to use availab-CSDN博客 解决Python中cuBLAS插件无法注册问题_unable to register cudnn factory: attempting to re-CS…

SQL数据库

一.什么是数据库 数据库&#xff1a;存储数据的仓库&#xff0c;数据是有组织的进行存储。&#xff08;database 简称DB&#xff09; 数据库管理系统&#xff1a;管理数据库的大型软禁&#xff08;DataBase Management System 简称DBMS&#xff09; SQL&#xff1a;操作关系…

【MySQL 5.7安装时候 出现2503报错,解决方案】

MySQL5.7 安装遇 2503问题如何解决 1.能正常安装就点这里2.出现2503问题就看这2.1先看问题2.1.1在官网下载好安装包后&#xff0c;首先先确认安装包是否完整&#xff0c;排除安装包损坏的问题2.1.2 安装时候出现这个2503问题 2.2上解决方案2.2.1 打开任务管理器2.2.2 解决 1.能…

「C/C++ 01」volatile关键字 和 修改const修饰的变量

目录 一、修改const修饰的局部变量 二、无法修改const修饰的全局变量 三、volatile关键字 面试题】 一、修改const修饰的局部变量 可以通过指针和强转来修改const修饰的局部变量。 #include <iostream> using namespace std;int main(void) {const int a 1;int* pa (in…

hive表基本语法

hive表基本语法 青少年是一个美好而又是一去不可再得的时期 是将来一切光明和幸福的开端 目录 hive表基本语法 1.ROW FORMAT用法 2.LOCATION用法 3.EXTERNAL用法 &#xff08;外部表&#xff09; 4.STORED AS 用法&#xff1a;设置数据存储格式 5.TBLPROPERTIES 用法 6.P…

.位运算.

本题涉及到计算机组成与原理的相关知识 找了一篇相当不错的讲解&#xff0c;大家可以借鉴&#xff1a;位运算&#xff1a;按位与、按位或、按位异或、按位左移、按位右移-CSDN博客 给定一个长度为 n&#x1d45b; 的数列&#xff0c;请你求出数列中每个数的二进制表示中 11 的…

设计模式: 工厂模式

工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式之一&#xff0c;这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 工厂模式提供了一种创建对象的方式&#xff0c;而无需指定要创建的具体类。 工厂模式属于创建型…

网络架构建模:一个云案例研究-文章翻译

网络架构建模:一个云案例研究 摘要 互联网支持广泛服务的能力取决于网络架构以及未来网络所需的理论和实践创新。本文中的网络体系结构指的是计算机网络系统的结构及其物理组件、配置和通信协议之间的交互。多年来,人们对网络架构进行了各种各样的描述,其中有大量的表面图…

ICode国际青少年编程竞赛- Python-1级训练场-基本操作

ICode国际青少年编程竞赛- Python-1级训练场-基本操作 1、 Dev.step(3)2、 Dev.step(1)3、 Dev.step(7)4、 Dev.step(-1)5、 Dev.step(-5)6、 Dev.step(3) Dev.step(-8)7、 Dev.turnRight() Dev.step(1)8、 Dev.turnLeft() Dev.step(1)9、 Dev.step(4) Dev.tur…

Linux下top命令指标说明

目录 Linux下top命令指标说明1. 概览2. CPU利用率3. 内存利用率4. 进程信息 Linux下top命令指标说明 在Linux系统中&#xff0c;top 命令是一个用于实时监视系统运行状态的工具。通过 top 命令&#xff0c;我们可以了解系统的负载情况、CPU利用率、内存使用情况以及各个进程的…

免费开源语音克隆-GPT-SoVITS-WebUI只需 5 秒的声音样本

语音克隆-GPT-SoVITS-WebUI 强大的少样本语音转换与语音合成Web用户界面。 功能&#xff1a; 零样本文本到语音&#xff08;TTS&#xff09;&#xff1a; 输入 5 秒的声音样本&#xff0c;即刻体验文本到语音转换。 少样本 TTS&#xff1a; 仅需 1 分钟的训练数据即可微调模型…

Matlab|二阶锥松弛在配电网最优潮流计算中的应用

目录 一、主要内容 二、部分代码 三、程序代码 四、下载链接 一、主要内容 最优潮流计算是电网规划、优化运行的重要基础。首先建立了配电网全天有功损耗最小化的最优潮流计算模型&#xff1b;其次结合辐射型配电网潮流特点建立支路潮流约束&#xff0c;并考虑配电网中的可…

夸克网盘批量转存分享查询软件

夸克网盘批量转存分享软件&#xff0c;未解决批量转存困难问题以及批量分享困难问题&#xff0c;故研发此软件&#xff0c;无任何广告。 支持功能 夸克文件目录查询 自定义分页页码&#xff0c;分页数量 批量转存夸克文件 批量分享夸克文件 自定义导入夸克链接 使用教程…

四川景源畅信:抖音小店怎么运营?

在信息爆炸的今天&#xff0c;抖音小店凭借其便捷的操作和庞大的用户基础&#xff0c;成为了众多创业者和品牌商的新宠。如何运营好一个抖音小店&#xff0c;成为了许多商家亟待解决的问题。接下来&#xff0c;我们将从四个不同的方面&#xff0c;深入探讨抖音小店的运营之道。…

Android14之解决报错:libncurses.so.5与libtinfo.so.5缺少问题(二百零九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

linux实验小结

题目&#xff1a; 添加一个用户 loutest&#xff0c;使用 sudo 创建文件 /opt/forloutest&#xff0c;设置成用户 loutest 可以读写。截图 并把操作过程写入实验报告。 提示:如何创建一个文件呢?可以考虑 touch 命令&#xff0c;执 行 sudo touch /opt/forloutest 这个命令可…

Unreal 编辑器工具 批量重命名资源

右键 - Editor Utilities - Editor Utility Blueprint&#xff0c;基类选择 Asset Action Utility 在类默认值内&#xff0c;可以添加筛选器&#xff0c;筛选指定的类型 然后新建一个函数&#xff0c;加上4个输入&#xff1a;ReplaceFrom&#xff0c;ReplaceTo&#xff0c;Add…