0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Qt实现串口通信

jf_78858299 来源:jf_78858299 作者:jf_78858299 2023-04-23 17:34 次阅读

要实现串口通信,需要知道串口通信需要的信息

主要参数有:波特率、校验位、数据位、停止位、控制流

主要操作有:串口的打开和关闭、刷新设备串口、接发数据、开关显示灯等。

实现效果如图:

图片

界面设计如下:

每个控件类名如下:

LED灯是QLable控件,设置它的长宽都是24px,然后鼠标右击,选择“样式表”,在样式表中添加代码。

图片

图片

图片

附赠完整源码

第一步:在头文件中引入 QtSerialPort 类的两个头文件(必须引入)

// 引入串口通信的两个头文件(第一步)
#include          // 提供访问串口的功能
#include      // 提供系统中存在的串口信

第二步:在工程文件中添加以下代码

# 引入串口工程类型(第二步)
QT       += serialport

第三步:在头文件中定义全局的串口对象

QSerialPort     *serial;                            // 定义全局的串口对象(第三步

第四步:参数设置,在头文件中定义初始化参数的函数和参数变量名,在.cpp文件中实现函数

public:
void        SerialPortInit();                      // 串口初始化(参数配置)

private:
// 参数配置
    QStringList     baudList;                           //波特率
    QStringList     parityList;                         //校验位
    QStringList     dataBitsList;                       //数据位
    QStringList     stopBitsList;                       //停止位
    QStringList     flowControlList;                    //控制流
// 串口初始化(参数配置)
void MainWindow::SerialPortInit()
{
    serial = new QSerialPort;                       //申请内存,并设置父对象

    // 获取计算机中有效的端口号,然后将端口号的名称给端口选择控件
    foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
    {
        serial->setPort(info);                      // 在对象中设置串口
        if(serial->open(QIODevice::ReadWrite))      // 以读写方式打开串口
        {
            ui->PortBox->addItem(info.portName());  // 添加计算机中的端口
            serial->close();                        // 关闭
        } else
        {
            qDebug() << "串口打开失败,请重试";
        }
    }

    // 参数配置
    // 波特率,波特率默认选择57600 ,禁止用户点击
    ui->BaudBox->addItem("57600");
    serial->setBaudRate(QSerialPort::Baud57600);
    ui->BaudBox->setDisabled(true);

    // 校验,校验默认选择无
    ui->ParityBox->addItem("无");
    serial->setParity(QSerialPort::NoParity);

    // 数据位,数据位默认选择8位
    ui->BitBox->addItem("8");
    serial->setDataBits(QSerialPort::Data8);

    // 停止位,停止位默认选择1位
    ui->StopBox->addItem("1");
    serial->setStopBits(QSerialPort::OneStop);

    // 控制流,默认选择无
    ui->ControlBox->addItem("无");
    serial->setFlowControl(QSerialPort::NoFlowControl);

    // 刷新串口
    RefreshSerialPort(0);

    // 信号
connect(serial,&QSerialPort::readyRead,this,&MainWindow::DataReceived);      // 接收数据
connect(ui->SendWordOrder,&QPushButton::clicked,this,&MainWindow::DataSend); // 发送数据
connect(ui->SendButton,&QPushButton::clicked,this,&MainWindow::DataSend);    // 发送数据
connect(ui->SendEditBtn1,&QPushButton::clicked,this,&MainWindow::DataSend);  // 发送数据
connect(ui->SendEditBtn2,&QPushButton::clicked,this,&MainWindow::DataSend);  // 发送数据
connect(ui->SendEditBtn3,&QPushButton::clicked,this,&MainWindow::DataSend);  // 发送数据
}

第五步:刷新串口,及时更新可用的串口

// 刷新串口
void MainWindow::RefreshSerialPort(int index)
{
    QStringList portNameList;                                        // 存储所有串口名
    if(index != 0)
    {
        serial->setPortName(ui->PortBox->currentText());             //设置串口号
    }
    else
    {
        ui->PortBox->clear();                                        //关闭串口号
        ui->PortBox->addItem("刷新");                                //添加刷新
        foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts()) //添加新串口
        {
            portNameList.append(info.portName());
        }
        ui->PortBox->addItems(portNameList);
        ui->PortBox->setCurrentIndex(1);                             // 当前串口号为COM1
        serial->setPortName(ui->PortBox->currentText());             //设置串口号
   }
}

第六步:发送数据和接收数据

// 接收数据,使用read () / readLine () / readAll ()
void MainWindow::DataReceived()
{
    char BUF[512] = {0};                                       // 存储转换类型后的数据
    QByteArray data = serial->readAll();                      // 读取数据

    if(!data.isEmpty())                                 // 接收到数据
    {
        QString str = ui->DataReceived->toPlainText();  // 返回纯文本
        str += tr(data);                         // 数据是一行一行传送的,要保存所有数据
        ui->DataReceived->clear();                      // 清空之前的数据
        ui->DataReceived->append(str);                  // 将数据放入控件中
        qDebug() << "str info: " << ui->DataReceived->toPlainText();

         // 清除之前的数据,防止追加,因为每次获取的数据不一样
        int index = str.indexOf("\\r\\n");                // 找到,返回索引值,找不到,返回-1
        if(index != -1)
        {
            snprintf(BUF,500,"%s", str.left(index + 2).toUtf8().data()); // QString转为char * 类型
            qDebug() << "BUF info: " << BUF;        // 数据类型转换成功
            str.remove(0,index + 2); 

            // 处理获取到的数据,将其放入对应的控件中
            // .....

        }
    }
}

// 发送数据,write ()
void MainWindow::DataSend()
{
    serial->write(ui->DataSend->toPlainText().toLatin1());      // 串口发送数据
}

第七步:打开串口和关闭串口,当打开串口后,显示绿灯;关闭串口后,显示红灯

// 串口开关
void MainWindow::on_OpenSerialButton_clicked()
{
    if(serial->isOpen())                                  // 如果串口打开了,先给他关闭
    {
        serial->clear();
        serial->close();
        // 关闭状态,按钮显示“打开串口”
        ui->OpenSerialButton->setText("打开串口");
        // 关闭状态,允许用户操作
        ui->BaudBox->setDisabled(false);
        ui->ParityBox->setDisabled(false);
        ui->BitBox->setDisabled(false);
        ui->StopBox->setDisabled(false);
        ui->ControlBox->setDisabled(false);
        // 禁止操作“发送字符操作”
        ui->SendWordOrder->setDisabled(true);
        ui->SendButton->setDisabled(true);
        // 关闭状态,颜色为绿色
        ui->OpenSerialButton->setStyleSheet("color: green;");
        // 关闭,显示灯为红色
        LED(true);
        // 清空数据
        ui->DataReceived->clear();
        ui->DataSend->clear();
    }
    else                                             // 如果串口关闭了,先给他打开
    {
        //当前选择的串口名字
        serial->setPortName(ui->PortBox->currentText());
        //用ReadWrite 的模式尝试打开串口,无法收发数据时,发出警告
        if(!serial->open(QIODevice::ReadWrite))
        {
            QMessageBox::warning(this,tr("提示"),tr("串口打开失败!"),QMessageBox::Ok);
            return;
         }
        // 打开状态,按钮显示“关闭串口”
        ui->OpenSerialButton->setText("关闭串口");
        // 打开状态,禁止用户操作
        ui->BaudBox->setDisabled(true);
        ui->ParityBox->setDisabled(true);
        ui->BitBox->setDisabled(true);
        ui->StopBox->setDisabled(true);
        ui->ControlBox->setDisabled(true);
        // 允许操作“发送字符操作”
        ui->SendWordOrder->setDisabled(false);
        ui->SendButton->setDisabled(false);
        // 打开状态,颜色为红色
        ui->OpenSerialButton->setStyleSheet("color: red;");
        // 打开,显示灯为绿色
        LED(false);
    }
}

// 开关显示灯
void  MainWindow::LED(bool changeColor)
{
    if(changeColor == false)
    {
        // 显示绿色
        ui->LED->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(0, 229, 0, 255), stop:1 rgba(255, 255, 255, 255));border-radius:12px;");
    }
    else
    {
        // 显示红色
        ui->LED->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(255, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));border-radius:12px;");
    }
}

第八步:相关槽函数

// 控件中添加 指令“###”
void MainWindow::on_SendButton_clicked()
{
    on_ClearButton_clicked();
    ui->DataSend->append("###");
}
// 清空控件
void MainWindow::on_ClearButton_clicked()
{
    ui->DataSend->setText("");
}
// 清空接收到的数据
void MainWindow::on_ClearShowButton_clicked()
{
    ui->DataReceived->setText("");
}
// 点击发送后,获取串口信息并展示在接受控件中
void MainWindow::on_SendEditBtn1_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit1->text();               //获取发送框内容
    ui->DataSend->setText(EditText);                     //将文本内容放在发送栏中
}

void MainWindow::on_SendEditBtn2_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit2->text();               //获取发送框内容

    // qDebug() << "Edit1 text: " << EditText;

    ui->DataSend->append(EditText);                     //将文本内容放在发送栏中
}

void MainWindow::on_SendEditBtn3_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit3->text();               //获取发送框内容

    // qDebug() << "Edit1 text: " << EditText;

    ui->DataSend->append(EditText);                     //将文本内容放在发送栏中
}



void MainWindow::on_SendWordOrder_clicked()
{
    on_SendButton_clicked();
}

源码:

工程文件.pro文件源码:

QT       += core gui
# 引入串口工程类型(第二步)
QT       += serialport

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \\
    main.cpp \\
    mainwindow.cpp

HEADERS += \\
    mainwindow.h

FORMS += \\
    mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

头文件源码:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
// 引入串口通信的两个头文件(第一步)
#include          // 提供访问串口的功能
#include      // 提供系统中存在的串口信息

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    // 串口功能
    void        SerialPortInit();                      // 串口初始化(参数配置)
    void        RefreshSerialPort(int index);          // 刷新串口

public slots:
    // 串口槽函数
    void        DataReceived();                        // 接收数据
private slots:
    // 串口槽函数
    void        DataSend();                            // 发送数据

    void        on_OpenSerialButton_clicked();         // 串口开关

    void        on_SendButton_clicked();               // 控件中添加 #

    void        on_ClearButton_clicked();              // 清空控件中的所有 #

    void        on_ClearShowButton_clicked();          // 清空接收到的数据

    void        LED(bool changeColor);                 // 开关显示灯

    // 点击发送,接收数据
    void        on_SendEditBtn1_clicked();

    void        on_SendEditBtn2_clicked();

    void        on_SendEditBtn3_clicked();


    void on_SendWordOrder_clicked();

private:
    Ui::MainWindow *ui;

    // 串口变量
    QSerialPort     *serial;                            // 定义全局的串口对象(第三步)
    // 参数配置
    QStringList     baudList;                           //波特率
    QStringList     parityList;                         //校验位
    QStringList     dataBitsList;                       //数据位
    QStringList     stopBitsList;                       //停止位
    QStringList     flowControlList;                    //控制流
};
#endif // MAINWINDOW_H

.cpp文件源码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include 
#include 

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    SerialPortInit();
}

// 串口初始化(参数配置)
void MainWindow::SerialPortInit()
{
    serial = new QSerialPort;                       //申请内存,并设置父对象

    // 获取计算机中有效的端口号,然后将端口号的名称给端口选择控件
    foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
    {
        serial->setPort(info);                      // 在对象中设置串口
        if(serial->open(QIODevice::ReadWrite))      // 以读写方式打开串口
        {
            ui->PortBox->addItem(info.portName());  // 添加计算机中的端口
            serial->close();                        // 关闭
        } else
        {
            qDebug() << "串口打开失败,请重试";
        }
    }

    // 参数配置
    // 波特率,波特率默认选择57600 ,禁止用户点击
    ui->BaudBox->addItem("57600");
    serial->setBaudRate(QSerialPort::Baud57600);
    ui->BaudBox->setDisabled(true);

    // 校验,校验默认选择无
    ui->ParityBox->addItem("无");
    serial->setParity(QSerialPort::NoParity);

    // 数据位,数据位默认选择8位
    ui->BitBox->addItem("8");
    serial->setDataBits(QSerialPort::Data8);

    // 停止位,停止位默认选择1位
    ui->StopBox->addItem("1");
    serial->setStopBits(QSerialPort::OneStop);

    // 控制流,默认选择无
    ui->ControlBox->addItem("无");
    serial->setFlowControl(QSerialPort::NoFlowControl);

    // 刷新串口
    RefreshSerialPort(0);

    // 信号
    connect(serial,&QSerialPort::readyRead,this,&MainWindow::DataReceived);         // 接收数据
    connect(ui->SendWordOrder,&QPushButton::clicked,this,&MainWindow::DataSend);    // 发送数据
    connect(ui->SendButton,&QPushButton::clicked,this,&MainWindow::DataSend);       // 发送数据
    connect(ui->SendEditBtn1,&QPushButton::clicked,this,&MainWindow::DataSend);    // 发送数据
    connect(ui->SendEditBtn2,&QPushButton::clicked,this,&MainWindow::DataSend);    // 发送数据
    connect(ui->SendEditBtn3,&QPushButton::clicked,this,&MainWindow::DataSend);    // 发送数据

}
// 刷新串口
void MainWindow::RefreshSerialPort(int index)
{
    QStringList portNameList;                                        // 存储所有串口名
    if(index != 0)
    {
        serial->setPortName(ui->PortBox->currentText());             //设置串口号
    }
    else
    {
        ui->PortBox->clear();                                        //关闭串口号
        ui->PortBox->addItem("刷新");                                //添加刷新
        foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts()) //添加新串口
        {
            portNameList.append(info.portName());
        }

        ui->PortBox->addItems(portNameList);
        ui->PortBox->setCurrentIndex(1);                             // 当前串口号为COM1
        serial->setPortName(ui->PortBox->currentText());             //设置串口号
   }
}

// 接收数据,使用read () / readLine () / readAll ()
void MainWindow::DataReceived()
{
    char BUF[512] = {0};                                       // 存储转换类型后的数据
    QByteArray data = serial->readAll();                      // 读取数据

    if(!data.isEmpty())                                 // 接收到数据
    {
        QString str = ui->DataReceived->toPlainText();  // 返回纯文本
        str += tr(data);                                // 数据是一行一行传送的,要保存所有数据
        ui->DataReceived->clear();                      // 清空之前的数据
        ui->DataReceived->append(str);                  // 将数据放入控件中
        qDebug() << "str info: " << ui->DataReceived->toPlainText();

         // 清除之前的数据,防止追加,因为每次获取的数据不一样
        int index = str.indexOf("\\r\\n");                // 找到,返回索引值,找不到,返回-1
        if(index != -1)
        {
            snprintf(BUF,500,"%s", str.left(index + 2).toUtf8().data()); // QString转为char * 类型
            qDebug() << "BUF info: " << BUF;
            str.remove(0,index + 2);

            // 处理获取到的数据,将其放入对应的控件中
            // ....
        }
    }
}
// 发送数据,write ()
void MainWindow::DataSend()
{
    serial->write(ui->DataSend->toPlainText().toLatin1());      // 串口发送数据
}

// 开关显示灯
void  MainWindow::LED(bool changeColor)
{
    if(changeColor == false)
    {
        // 显示绿色
        ui->LED->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(0, 229, 0, 255), stop:1 rgba(255, 255, 255, 255));border-radius:12px;");
    }
    else
    {
        // 显示红色
        ui->LED->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(255, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));border-radius:12px;");
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

// 串口开关
void MainWindow::on_OpenSerialButton_clicked()
{
    if(serial->isOpen())                                        // 如果串口打开了,先给他关闭
    {
        serial->clear();
        serial->close();
        // 关闭状态,按钮显示“打开串口”
        ui->OpenSerialButton->setText("打开串口");
        // 关闭状态,允许用户操作
        ui->BaudBox->setDisabled(false);
        ui->ParityBox->setDisabled(false);
        ui->BitBox->setDisabled(false);
        ui->StopBox->setDisabled(false);
        ui->ControlBox->setDisabled(false);
        // 禁止操作“发送字符操作”
        ui->SendWordOrder->setDisabled(true);
        ui->SendButton->setDisabled(true);
        // 关闭状态,颜色为绿色
        ui->OpenSerialButton->setStyleSheet("color: green;");
        // 关闭,显示灯为红色
        LED(true);
        // 清空数据
        ui->DataReceived->clear();
        ui->DataSend->clear();
    }
    else                                                        // 如果串口关闭了,先给他打开
    {
        //当前选择的串口名字
        serial->setPortName(ui->PortBox->currentText());
        //用ReadWrite 的模式尝试打开串口,无法收发数据时,发出警告
        if(!serial->open(QIODevice::ReadWrite))
        {
            QMessageBox::warning(this,tr("提示"),tr("串口打开失败!"),QMessageBox::Ok);
            return;
         }
        // 打开状态,按钮显示“关闭串口”
        ui->OpenSerialButton->setText("关闭串口");
        // 打开状态,禁止用户操作
        ui->BaudBox->setDisabled(true);
        ui->ParityBox->setDisabled(true);
        ui->BitBox->setDisabled(true);
        ui->StopBox->setDisabled(true);
        ui->ControlBox->setDisabled(true);
        // 允许操作“发送字符操作”
        ui->SendWordOrder->setDisabled(false);
        ui->SendButton->setDisabled(false);
        // 打开状态,颜色为红色
        ui->OpenSerialButton->setStyleSheet("color: red;");
        // 打开,显示灯为绿色
        LED(false);
    }
}
// 控件中添加 #
void MainWindow::on_SendButton_clicked()
{
    on_ClearButton_clicked();
    ui->DataSend->append("###");
}
// 清空控件
void MainWindow::on_ClearButton_clicked()
{
    ui->DataSend->setText("");
}
// 清空接收到的数据
void MainWindow::on_ClearShowButton_clicked()
{
    ui->DataReceived->setText("");
}
// 点击发送后,获取串口信息并展示在接受控件中
void MainWindow::on_SendEditBtn1_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit1->text();               //获取发送框内容
    ui->DataSend->setText(EditText);                     //将文本内容放在发送栏中
}

void MainWindow::on_SendEditBtn2_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit2->text();               //获取发送框内容

    // qDebug() << "Edit1 text: " << EditText;

    ui->DataSend->append(EditText);                     //将文本内容放在发送栏中
}

void MainWindow::on_SendEditBtn3_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit3->text();               //获取发送框内容

    // qDebug() << "Edit1 text: " << EditText;

    ui->DataSend->append(EditText);                     //将文本内容放在发送栏中
}


void MainWindow::on_SendWordOrder_clicked()
{
    on_SendButton_clicked();
}

运行后效果:

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 显示器
    +关注

    关注

    21

    文章

    4915

    浏览量

    139701
  • 串口
    +关注

    关注

    14

    文章

    1540

    浏览量

    75991
  • 串口通信
    +关注

    关注

    34

    文章

    1605

    浏览量

    55350
  • 波特率
    +关注

    关注

    2

    文章

    293

    浏览量

    34020
收藏 人收藏

    评论

    相关推荐

    基于QT串口调试工具设计

    串口通信是我们经常会遇到的问题。很多时候当我们设计一个串口应用时,我们希望有一个简便的、可视的方式来验证它。这一篇中我们就来基于QT设计一个串口
    的头像 发表于 12-13 14:37 2171次阅读
    基于<b class='flag-5'>QT</b>的<b class='flag-5'>串口</b>调试工具设计

    QT串口通信的简单使用

    QT串口通信是上位机和下位机通信常用的通信方式, 也是学习QT必须学会的基础知识, 这篇就简单介
    的头像 发表于 01-15 09:27 1727次阅读
    <b class='flag-5'>QT</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>的简单使用

    实现基于Qt的上位机与下位机进行串口通信

    :Qt5.96Mingw32-bit keil3项目目标1、实现下位机基于STC单片机控制LED灯模块、独立键盘模块.2、实现基于Qt的上位机与下位机进行
    发表于 12-08 07:26

    QT串口通信的相关资料推荐

    QT通信-串口通信前言一、串口搜索二、打开串口二、发送或接收数据二、程序如下:总结前言
    发表于 01-11 07:56

    QT串口程序的编写

    QT串口程序的编写前言:如果用qt写程序作为上位机,然后通过和u***和下位机通信的时候,就需要用到qt中的
    发表于 01-18 06:08

    Qt串口通信专题教程

    这是一个关于在Qt Creator下进行串口通信软件开发的专题教程,能够帮助你快速的开发有关的串口应用。
    发表于 05-04 14:37 24次下载

    基于Qt串口通信应用研究与实现严贤

    基于Qt串口通信应用研究与实现_严贤
    发表于 03-17 08:00 3次下载

    基于RS232串口实现PIC单片机下位机与QT上位机通信

    基于RS232串口实现PIC单片机下位机与QT上位机通信
    发表于 11-16 12:21 21次下载
    基于RS232<b class='flag-5'>串口实现</b>PIC单片机下位机与<b class='flag-5'>QT</b>上位机<b class='flag-5'>通信</b>

    QT 串口通信,操作程控电源 Agilent 66312A

    背景:用QT来写个串口通信小工具,操作程控电源Agilent 66312A ,能够设置电压,获取电流步骤:1、Agilent 66312A RS-232配置按图中步骤,确保程控电压调制RS-232
    发表于 01-12 12:44 17次下载
    <b class='flag-5'>QT</b> <b class='flag-5'>串口</b><b class='flag-5'>通信</b>,操作程控电源 Agilent 66312A

    利用QT 串口通信进行RS232协议开发

    QT串口通信协议代码最近在研究用串口通信去发送协议指令控制相机工作,因为是第一次接触串口,期间也
    发表于 01-14 10:05 3次下载
    利用<b class='flag-5'>QT</b> <b class='flag-5'>串口</b><b class='flag-5'>通信</b>进行RS232协议开发

    基于Qt实现串口示波器

    摘要:逛github时看到这个QT串口示波器,完全开源,支持串口、TCP、波形显示、通信协议。感觉很不错,跟以前分享的那个vofa+有点像。感兴趣的可以下载下来学习学习。
    的头像 发表于 06-12 15:34 3597次阅读

    基于QT串口小助手开发

    QT开发一个串口小助手,要求能实现串口接收,发送等基本功能。
    的头像 发表于 04-04 15:07 2030次阅读
    基于<b class='flag-5'>QT</b>的<b class='flag-5'>串口</b>小助手开发

    QT与三菱PLC串口通信

    最近两天在学习QT与三菱PLC串口通信,特此记录下来。 通信格式 我这里使用RS-232C连接的,根据FX编程口协议! 设置参数,以读写的方式打开
    发表于 04-17 16:08 0次下载
    <b class='flag-5'>QT</b>与三菱PLC<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    QTQT上位机串口编程

    QTQT上位机串口编程 最近因为项目需要,需要用到上位机,通过串口与上位机进行通讯,来上传和下发一些数据以及控制指令,所以用QT写了一
    发表于 05-08 10:02 25次下载
    <b class='flag-5'>QT</b>篇<b class='flag-5'>QT</b>上位机<b class='flag-5'>串口</b>编程

    Qt5实现上位机与串口通信

    Qt助手内搜索:Qt Serial Port为串口的相关函数  1.添加串口头文件: # include //使用串口功能# inc
    发表于 05-10 10:46 0次下载
    <b class='flag-5'>Qt</b>5<b class='flag-5'>实现</b>上位机与<b class='flag-5'>串口</b><b class='flag-5'>通信</b>