QT5.5实现串口通信
QT5.1以上版本自带QtSerialPort集成库,只要在头文件中集成
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
这两个库,后续只需要调用函数,对串口名,读写方式,波特率,验证方式,数据位数,结束位进行相应设置,便可以连接相应串口进行通信。 部分代码:
if(ui->pushButton->text()==tr("打开串口")){
my_serialport= new QSerialPort();
my_serialport->setPortName(ui->comboBox->currentText());
my_serialport->open(QIODevice::ReadWrite);
my_serialport->setBaudRate(ui->comboBox_2->currentText().toInt());
switch(ui->comboBox_3->currentIndex()){
case 0: my_serialport->setParity(QSerialPort::NoParity);break;
case 1: my_serialport->setParity(QSerialPort::OddParity);break;
case 2: my_serialport->setParity(QSerialPort::EvenParity);break;
default: break;
}
switch(ui->comboBox_4->currentIndex()){
case 0: my_serialport->setDataBits(QSerialPort::Data8);break;
case 1: my_serialport->setDataBits(QSerialPort::Data7);break;
case 2: my_serialport->setDataBits(QSerialPort::Data6);break;
default: break;
}
switch(ui->comboBox_5->currentIndex()){
case 0: my_serialport->setStopBits(QSerialPort::OneStop);break;
case 1: my_serialport->setStopBits(QSerialPort::TwoStop);break;
default: break;
}
my_serialport->setFlowControl(QSerialPort::NoFlowControl);
connect(my_serialport,SIGNAL(readyRead()),this,SLOT(my_readuart()));
ui->comboBox->setEnabled(false);
ui->comboBox_2->setEnabled(false);
ui->comboBox_3->setEnabled(false);
ui->comboBox_4->setEnabled(false);
ui->comboBox_5->setEnabled(false);
ui->label_6->setStyleSheet("background-color:red");
ui->pushButton->setText(tr("关闭串口"));
ui->pushButton_2->setEnabled(true);
}
else {
my_serialport->clear();
my_serialport->deleteLater();
// my_serialport->deleteLater();
ui->comboBox->setEnabled(true);
ui->comboBox_2->setEnabled(true);
ui->comboBox_3->setEnabled(true);
ui->comboBox_4->setEnabled(true);
ui->comboBox_5->setEnabled(true);
// ui->label_6->setStyleSheet("background-color:none");
ui->label_6->setStyleSheet("background-color:rgb(130,130,130)");
ui->pushButton->setText(tr("打开串口"));
ui->pushButton_2->setEnabled(false);
}
其中参考于csdn的yh_1988。
void serial::on_pushButton_2_clicked()
{
my_serialport->write(ui->lineEdit->text().toLatin1());
}
值得注意的是,在用于串口通信时,上述函数中只讲lineEdit中的text传递给串口,但是这样是缺少换行符/n的。如果是用在有uboot系统上通过串口进行交互时,应该修改为:
void serial::on_pushButton_2_clicked()
{
my_serialport->write(ui->lineEdit->text().toLatin1());
my_serialport->write("/n");
}
这样就可以正常的通信啦。 系统启动过程打印

输入?弹出帮助菜单

最近用Qt5.9重新编辑了一个Demo,需要下载的同学可以在下面的网址下载
https://github.com/dong930623/Qt/tree/master/SerialPortToolDemo
QT5.5实现串口通信的更多相关文章
- Qt 串口通信
在Qt5之前,串口通信基本依赖于第三方库,下面是我曾接触过的串口通信类库: 名称 语言 平台 QextSerialPort QT C++ Win/Linux http://sourceforge. ...
- QT5 TK1 串口通信
对TK1中基于QT5的串口通信过程进行总结.按照软件安装及通信实现的顺序. 1.QT5安装 较简洁方式:打开软件中心(类似A形),搜索qtcreator,点击安装即可. 2.串口通信库安装 采用上述方 ...
- Qt串口通信
1. Qt串口通信类QSerialPort 在Qt5的的更新中,新增了串口通信的相关接口类QSerialPort,这使得在开发者在使用Qt进行UI开发时,可以更加简单有效地实现串口通信的相关功能. 开 ...
- Qt实现串口通信总结
Qt实现串口通信总结 注意: Qt5发布之前,Qt实现串口通信一般是采用第三方类库qextserialport.Qt5发布后自带了QtSerialPort 能够支持串口通信. 1.Qextserial ...
- .NET 串口通信
这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通 ...
- BluetoothChat用于蓝牙串口通信的修改方法
本人最近在研究嵌入式的串口通信,任务是要写一个手机端的遥控器用来遥控双轮平衡小车.界面只用了一个小时就写好了,重要的问题是如何与板子所带的SPP-CA蓝牙模块进行通信. SPP-CA模块自带代码,在这 ...
- Win10 IoT C#开发 4 - UART 串口通信
Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,既可以开发设备UI与用户交互式操作,又可以控制GPIO等接口,使得原来嵌入式繁琐的开发变得简单.通过Remote Debug ...
- 使用Java实现简单串口通信
最近一门课要求编写一个上位机串口通信工具,我基于Java编写了一个带有图形界面的简单串口通信工具,下面详述一下过程,供大家参考 ^_^ 一: 首先,你需要下载一个额外的支持Java串口通信操作的jar ...
- Java 串口通信
在Windows系统下,用Java开发串口通信相关的程序时,需要用到几个文件. (1)win32com.dll 要放在jdk\jre\bin目录下. (2)comm.jar 和javax.comm.p ...
随机推荐
- 8 Hbase get方式获取数据
package com.hikvision.hbase.vertify.test; import org.apache.hadoop.conf.Configuration; import org.ap ...
- C#数组的指定位置复制函数
1. // 源数组 - 起始位置 -目的数组 - 起始位置 - 长度 System.Array.Copy(mcu_data, 2, read_mcu_data_whole, 0, mcu_data.L ...
- CSS注意事项
1.定义样式不能就加:隔开 当有定义的css样式并没有起作用的时候看看定义该样式前边有没有加“;”的如 p{};div{}
- HTML5画布(线条、渐变)
绘制直线时,一般会用到moveTo与lineTo两种方法. 案例1: <!DOCTYPE html><html><head lang="en"> ...
- UVA1589 Xiangqi
Xiangqi is one of the most popular two-player board games in China. The game represents a battle bet ...
- Nasty Hacks <入门练手题>
Nasty Hacks Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- a标签# 和javascript:;的区别
最近遇到一个问题,解决了记录下来. <body style="height:10000px;"> <span style="top:3000px;pos ...
- IOS开发笔记(4)数据离线缓存与读取
IOS开发笔记(4)数据离线缓存与读取 分类: IOS学习2012-12-06 16:30 7082人阅读 评论(0) 收藏 举报 iosiOSIOS 方法一:一般将服务器第一次返回的数据保存在沙盒里 ...
- C++之------进制学习
碰到一些寄出的东西不是很理解,就是关于多进制在代码中的转换: 比喻一个数number的多进制表示方法:B:二进制 Q:八进制 D:十进制 H:十六进制 二进制:0bnumber ( ...
- 在Fragment中使用BaiduMap SDK
1:fragment_bshdzh.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...