QT开发串口助手(四)——实现发送数据功能

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

今天我们首先来完善数据接收功能, 同时完成数据发送功能

一. 完善数据接收功能

主要有以下几点需要完善:

  • 需要接收中文
  • 打开串口的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();
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零涂

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值