今天我们首先来完善数据接收功能, 同时完成数据发送功能
一. 完善数据接收功能
主要有以下几点需要完善:
- 需要接收中文
- 打开串口的pushbotton,点击打开后需要改为关闭串口功能
1. 完善接收中文功能
这一块我在帮助手册上是找不到解决办法,只能在网上看有没有解决办法了, 参考了网上这位博主的https://blog.youkuaiyun.com/ouening/article/details/89469468,接收函数修改为
/*显示串口数据函数*/
void MainWindow::displayData()
{
QByteArray rx_data;
rx_data = this->serialPortUsing.readAll();
QString str = QString::fromLocal8Bit(rx_data);
qDebug() << str;
rx_data.clear();
}
就可以愉快的显示中文了

2. 完善打开串口和关闭串口功能
做这个功能的思路是先定义一个bool类型的打开与否标志位,点击了打开串口就把这个标志位翻转,再次点击时 在槽函数里面判断这个标志位,做相应的打开或者关闭操作。
mainwindow.cpp代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
#include <QComboBox>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
/*显示波特率*/
this->BaudList << "9600" << "19200" <<"115200";
ui->baudComboBox->addItems(this->BaudList);
/*刷新串口*/
this->refreshPort();
/* 点击刷新功能显示*/
connect(ui->refreshPortBtn, &QPushButton::clicked, this, &MainWindow::refreshPort);
/* 点击打开串口*/
connect(ui->openSerialBtn, &QPushButton::clicked, this, &MainWindow::openPort);
/* 显示串口数据 */
connect(&this->serialPortUsing, &QSerialPort::readyRead , this, &MainWindow::displayData);
}
/*刷新串口处理函数*/
void MainWindow::refreshPort()
{
qDebug() << "刷新串口";
/*清除comboxBox的内容,防止显示重复的串口*/
ui->displayPortComboBox->clear();
/* 读取可以使用的串口*/
this->avaiPortsList = QSerialPortInfo::availablePorts();

本文介绍了使用Qt进行串口通信的实现,包括如何完善接收中文功能,通过QSerialPort库设置串口参数,并实现打开/关闭串口的功能。此外,还展示了如何添加发送数据功能,通过点击按钮发送固定字符串到串口,并能接收到下位机的回应。
最低0.47元/天 解锁文章
3608

被折叠的 条评论
为什么被折叠?



