准备工作

*.pro中加入

QT += serialport

初始化

void MainWindow::initPort()
{
//读取串口信息
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
qDebug()<<"Name:"<<info.portName();
qDebug()<<"Description:"<<info.description();
qDebug()<<"Manufacturer:"<<info.manufacturer(); //这里相当于自动识别串口号之后添加到了cmb,如果要手动选择可以用下面列表的方式添加进去
QSerialPort serial;
serial.setPort(info);
if(serial.open(QIODevice::ReadWrite))
{
//将串口号添加到cmb
ui->cmbPortName->addItem(info.portName());
//关闭串口等待人为(打开串口按钮)打开
serial.close();
}
} QStringList baudList;//波特率
QStringList parityList;//校验位
QStringList dataBitsList;//数据位
QStringList stopBitsList;//停止位 baudList<<"50"<<"75"<<"100"<<"134"<<"150"<<"200"<<"300"
<<"600"<<"1200"<<"1800"<<"2400"<<"4800"<<"9600"
<<"14400"<<"19200"<<"38400"<<"56000"<<"57600"
<<"76800"<<"115200"<<"128000"<<"256000"; ui->cmbBaudRate->addItems(baudList);
ui->cmbBaudRate->setCurrentIndex(12); parityList<<"无"<<"奇"<<"偶"; ui->cmbParity->addItems(parityList);
ui->cmbParity->setCurrentIndex(0); dataBitsList<<"5"<<"6"<<"7"<<"8";
ui->cmbDataBits->addItems(dataBitsList);
ui->cmbDataBits->setCurrentIndex(3); stopBitsList<<"1";
stopBitsList<<"1.5";
stopBitsList<<"2"; ui->cmbStopBits->addItems(stopBitsList);
ui->cmbStopBits->setCurrentIndex(0); //设置按钮可以被按下
ui->openCom->setCheckable(true); connect(ui->openCom,SIGNAL(clicked()),this,SLOT(on_btnOpen_clicked()));
connect(ui->pushButtonSpeedSet,SIGNAL(clicked()),this,SLOT(on_btnSet_clicked()));
}

打开串口

void MainWindow::on_btnOpen_clicked()
{
my_serialport = new QSerialPort(this); //设置串口号
my_serialport->setPortName(ui->cmbPortName->currentText());
//以读写方式打开串口
if(my_serialport->open(QIODevice::ReadWrite))
{
//设置波特率
my_serialport->setBaudRate(ui->cmbBaudRate->currentText().toInt());
//设置数据位
my_serialport->setDataBits(QSerialPort::Data8);
//设置校验位
my_serialport->setParity(QSerialPort::NoParity);
//设置流控制
my_serialport->setFlowControl(QSerialPort::NoFlowControl);
//设置停止位
my_serialport->setStopBits(QSerialPort::OneStop); //每秒读一次
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(readComDataSlot()));
timer->start(1000); ui->openCom->setEnabled(false);
ui->lineEditSpeed->setText(QString("待传输"));
ui->lineEditTemp->setText("0");
}
else
{
QMessageBox::about(NULL, "提示", "串口没有打开!");
return;
}
}

void MainWindow::readComDataSlot()
{
//读取串口数据
QByteArray readComData = my_serialport->readAll(); qDebug() << "size: " << readComData.size();
qDebug() << "data: " << readComData; //数据显示
if(readComData != NULL)
{
ui->lineEdit->setText(QString(readComData));
}
//清除缓冲区
readComData.clear();
}

void MainWindow::on_btnSet_clicked()
{
//获取发送区的数据
QString sendData = ui->lineEditSpeedSet->text();
QByteArray sendData_2 = sendData.toLatin1(); //写入缓冲区
my_serialport->write(sendData_2);
}

qt 操作串口 QSerialPort的更多相关文章

  1. qt 操作串口

    第三方类下载 https://sourceforge.net/projects/qextserialport/files/ 目录介绍 搭建工程 拷贝qextserialbase.cpp.qextser ...

  2. Qt编写串口通信程序全程图文解说

    (说明:我们的编程环境是windows xp下,在Qt Creator中进行,假设在Linux下或直接用源代码编写,程序稍有不同,请自己修改.) 在Qt中并没有特定的串口控制类,如今大部分人使用的是第 ...

  3. 转:Qt编写串口通信程序全程图文讲解

    转载:http://blog.csdn.net/yafeilinux/article/details/4717706  作者:yafeilinux (说明:我们的编程环境是windows xp下,在Q ...

  4. 树莓派中QT实现串口通讯

    树莓派中QT实现串口通讯 开发平台为QT 此博客QT使用的为WiringPi驱动 我使用的串口调试助手为 cutecom 先简单说一些开发过程中需要注意的问题 Linux 下设备为 tty ,对应在 ...

  5. Qt实现串口通信总结

    Qt实现串口通信总结 注意: Qt5发布之前,Qt实现串口通信一般是采用第三方类库qextserialport.Qt5发布后自带了QtSerialPort 能够支持串口通信. 1.Qextserial ...

  6. Qt开发串口

    首先,在工程文件里面, QT += serialport 在头文件里面, #include <QSerialPort> 1.配置打开串口 QSerialPort* myserial = n ...

  7. Qt编写串口通信程序全程图文讲解 .

    在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourceforge.net/projects/qex ...

  8. Qt 编写串口调试助手

    一.成品图展示 成品图如下所示: 二.串口通讯步骤 1.在工程文件(.pro)中添加串口通信相关运行库:QT += serialport 2.在头文件中添加: #include <QSerial ...

  9. 【转】Qt编写串口通信程序全程图文讲解

    本文章原创于www.yafeilinux.com 转载请注明出处. (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或直接用源码编写,程序稍有不同,请自 ...

随机推荐

  1. 201871010118-唐敬博 《面向对象程序设计(java)》第十五周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 <https://www.cnblogs.com/nwnu-daizh/> 这个作业的要求在哪里 <https://ww ...

  2. 【视频技术】ffmpeg截取图片(Mac)

    1. 输出单张图片:ffmpeg -i NLP-CNN.mp4 -f image2 -ss 2000 -vframes 1 -s 220*220 NLP-CNN-003.jpg 2. 输出所有图片: ...

  3. Shell 脚本中 '$' 符号的多种用法

    通常情况下,在工作中用的最多的有如下几项: $0:Shell 的命令本身 $1 到 $9:表示 Shell 的第几个参数 $? :显示最后命令的执行情况 $#:传递到脚本的参数个数 $$:脚本运行的当 ...

  4. 微信小程序 - 结构目录 | 配置介绍

    结构目录 小程序框架提供了自己的视图层描述语言 WXML 和 WXSS,以及 JavaScript,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑. 一.小程序文件结构和传 ...

  5. 团队冲刺---Five

    今天的计划:做界面. 昨天做了什么? 研究了css代码和模板,进行测试模板. 遇到的困难:使用标签时运用不熟总出错.

  6. javascript专题系列--js乱序

    乱序的意思想必没有不知道:就是将数组打乱. 听到乱序一般都会想到js的随机函数Math.random(); var values = [1, 2, 3, 4, 5]; values.sort(func ...

  7. MySQL单表查询 条件查询,分组

    目录 1 where 条件查询 between like not in 2 group by 分组 聚合函数:max min sum avg count 3 having 过滤 4 distinct ...

  8. <String> 345 205

    345. Reverse Vowels of a String 头尾指针开始扫描. String.contains(char) class Solution { public String rever ...

  9. [LeetCode] 147. Insertion Sort List 链表插入排序

    Sort a linked list using insertion sort. A graphical example of insertion sort. The partial sorted l ...

  10. K8S 如何实现将git代码下拉到指定的容器路径中

    gitRepo 是 kubernetes Volume类型中的一种,gitRepo volume可以实现将git代码下拉到指定的容器路径中. 备注:实现此功能,Pod运行的节点都必需要安装git.换句 ...