QT5入门之23 -QT串口编程

 

QT5有专门的串口类: 
QSerialPort:提供访问串口的功能 
QSerialPortInfo:提供系统中存在的串口的信息 
具体使用方法: 
1.在pro文件中加入: QT += serialport

2.mainwindow.h中添加头文件及成员:

#include <QSerialPort>
#include <QSerialPortInfo>
  • 1
  • 2
public:
QSerialPort serial;//串口实例
void initSerialPort();//初始化串口函数
private slots://必须加slots
void serialRead();
  • 1
  • 2
  • 3
  • 4
  • 5

3.在主窗口添加一个comboBox,一个label,初始化串口

void MainWindow::initSerialPort()
{
connect(&serial,SIGNAL(readyRead()),this,SLOT(serialRead())); //连接槽 //获取计算机上所有串口并添加到comboBox中
QList<QSerialPortInfo> infos = QSerialPortInfo::availablePorts();
if(infos.isEmpty())
{
ui->comboBox->addItem("无串口");
return;
}
foreach (QSerialPortInfo info, infos) {
ui->comboBox->addItem(info.portName());
qDebug() << info.portName();
}
}

3.comboBox选择改变事件函数:

void MainWindow::on_comboBox_currentIndexChanged(const QString &arg1)
{
QSerialPortInfo info;
QList<QSerialPortInfo> infos = QSerialPortInfo::availablePorts();
int i = 0;
foreach (info, infos) {
if(info.portName() == arg1) break;
i++;
}
if(i != infos.size ()){//can find
ui->lblStatus->setText("串口打开成功");
serial.close();
serial.setPort(info);
serial.open(QIODevice::ReadWrite); //读写打开
// serial.setBaudRate(QSerialPort::Baud9600); //波特率
// serial.setDataBits(QSerialPort::Data8); //数据位
// serial.setParity(QSerialPort::NoParity); //无奇偶校验
// serial.setStopBits(QSerialPort::OneStop); //无停止位
// serial.setFlowControl(QSerialPort::NoFlowControl); //无控制
}else{
serial.close();
ui->lblStatus->setText("串口打开失败");
}
}

4.串口发送

void MainWindow::on_btnSend_clicked()
{
// QByteArray arr = "abcd";
// serial.write(arr);
char dat[] = {0x55,0x01,0x05,0x00,0xAA};
serial.write(dat,5);
}

5.串口接收,需添加一个textEdit。

void MainWindow::serialRead()
{
QByteArray qa = serial.readAll();
// if(qa.at(0)=='a')
ui->textEdit->append(qa);
// str.sprintf("%02x ",(int)qa[i]);//十六进制显示
// QMessageBox::warning (this,tr("提示信息"),tr("串口接收成功"));
}

可以用虚拟串口软件和丁丁串口助手调试。 

QT5入门之23 -QT串口编程(转)的更多相关文章

  1. Qt 串口编程学习1

    1.测试设备:USB 转串口 将RX和TX短接 2.开发环境:windows 1安装Qt for windows 2测试,新建项目编译 出现问题 Cannot find file: C:\Docume ...

  2. Qt 5入门指南之Qt Quick编程示例

    编程示例 使用Qt创建应用程序是十分简单的.考虑到你的使用习惯,我们编写了两套教程来实现两个相似的应用程序,但是使用了 不同的方法.在开始之前,请确保你已经下载了QtSDK的商业版本或者开源版本,并且 ...

  3. QT串口通信编程

    QT串口编程 文件夹目录结构如下图所示 设计的示例界面如下图所示 首先在项目文件里面添加一句 QT += serialport SerialPortDemo.pro文件如下: #----------- ...

  4. Qt中的串口编程之三

    QtSerialPort 今天我们来介绍一下QtSerialPort模块的源代码,学习一下该可移植的串口编程库是怎么实现的. 首先,我们下载好了源代码之后,使用QtCreator打开整个工程,可以看到 ...

  5. CC++初学者编程教程(9) Windows8.1安装VS2013并捆绑QT与编程助手

    我们在Windows8.1安装VS2013并捆绑QT与编程助手需要下列文件. 2. 在虚拟机中开启Windows8.1 3.然后选择VS2013的安装镜像. 4.将镜像复制到虚拟机. 5.我们装载这个 ...

  6. CC++刚開始学习的人编程教程(9) Windows8.1安装VS2013并捆绑QT与编程助手

    我们在Windows8.1安装VS2013并捆绑QT与编程助手须要下列文件. 2. 在虚拟机中开启Windows8.1 3.然后选择VS2013的安装镜像. 4.将镜像拷贝到虚拟机. 5.我们装载这个 ...

  7. Qt 串口类QSerialPort 使用笔记

    Qt 串口类QSerialPort 使用笔记 虽然现在大多数的家用PC机上已经不提供RS232接口了.但是由于RS232串口操作简单.通讯可靠,在工业领域中仍然有大量的应用.Qt以前的版本中,没有提供 ...

  8. c++学习书籍推荐《C++ GUI Qt 4编程(第2版)》下载

    下载地址:点我 百度云及其他网盘下载地址:点我 编辑推荐 <C++ GUI Qt 4编程(第2版)>讲授的大量Qt4编程原理和实践,都可以轻易将其应用于Qt4.4.Qt4.5及后续版本的Q ...

  9. Qt串口通信

    1. Qt串口通信类QSerialPort 在Qt5的的更新中,新增了串口通信的相关接口类QSerialPort,这使得在开发者在使用Qt进行UI开发时,可以更加简单有效地实现串口通信的相关功能. 开 ...

随机推荐

  1. Linux之目录结构解析

    /    /bin 存放[二进制可执行命令]目录,与usr/bin相比,它是系统性的.主要放置一些系统的必备执行档.例如:cat.cp.chmod df.dmesg.gzip.kill.ls. mkd ...

  2. Python杀死windows进程

    import os import pandas as pd """ TCP 192.168.1.155:63758 129.211.126.69:4730 ESTABLI ...

  3. json转对象-对象转json

    我们经常会用到json,所以在c#里就会经常有对象or对象数组转json,json转对象or对象数组. ps:对象或者json可能是{}or[],也就是json属性or json数组形式,或者json ...

  4. mysql 架构 ~异地容灾

    一 简介 我们来探讨下多机房下的mysql架构二 目的:    首先要清楚你的目的     1 实现异地机房的容灾备份      2 实现异地机房的双活 三 叙说     1 实现异地机房的容灾备份  ...

  5. [转]gcc -ffunction-sections -fdata-sections -Wl,–gc-sections 参数详解

    背景 有时我们的程序会定义一些暂时使用不上的功能和函数,虽然我们不使用这些功能和函数,但它们往往会浪费我们的ROM和RAM的空间.这在使用静态库时,体现的更为严重.有时,我们只使用了静态库仅有的几个功 ...

  6. yield函数的理解

    1.https://blog.csdn.net/qq_33472765/article/details/80839417

  7. c# 创建项目时提示:未能正确加载“microsoft.data.entity.design.bootstrappackage

    vs 2005 ,vs 2008, vs 2010,安装后有时出现这个错误(我的机器装的x64的win7),很烦人.找了很多地方都不能解决.其实说起来还是开发国家牛,轻易就解决了这个问题.其实出现这个 ...

  8. linux软链接和硬链接的区别

    硬链接:ln 3.txt 4         相当于把源文件复制了一份 软连接:ln -s 3.txt 5 相当于快捷方式 改动源文件4.5同时更新,删除3.txt ,5不存在,4存在的.

  9. 最大流算法-最高标号预流推进(HLPP)

    昨天我们学习了ISAP算法,它属于增广路算法的大类.今天学习的算法是预流推进算法中很高效的一类--最高标号预流推进(HLPP). 预流推进 预流推进是一种很直观的网络流算法.如果给到一个网络流让你手算 ...

  10. Account的简单架构

    前几天,有园友私下问我,博客中的AccountDemo后端架构为什么是那样的,是不是分层太多太冗余,故这里简单介绍下.先看解决方案工程截图: 每个工程的含义,见https://www.cnblogs. ...