当前位置: 首页 > news >正文

怎么做网站咨询2023年9月疫情又开始了吗

怎么做网站咨询,2023年9月疫情又开始了吗,外贸手机网站建设,做网站外国的服务器一.Qt串口通信 Qt提供了两个关于串口通信的C类,分别是QSerialPort和QSerialPortInfo。 QSerialPort类提供了操作串口的各种接口。 QSerialPortInfo是一个辅助类,可以提供计算机中可用的串口的各种信息。 QSerialPortInfo Class用于提供外部串行端口的…

一.Qt串口通信

Qt提供了两个关于串口通信的C++类,分别是QSerialPort和QSerialPortInfo。

QSerialPort类提供了操作串口的各种接口。

QSerialPortInfo是一个辅助类,可以提供计算机中可用的串口的各种信息。

QSerialPortInfo Class用于提供外部串行端口的信息。

使用静态函数生成一个QSerialPortInfo对象的列表。列表中的每个QSerialPortInfo对象存储着单个串行端口的信息,可以查询端口名称,系统位置,描述和制造商。QSerialPortInfo类也可作为QSerialPort类中setPort()方法的输入参数。

二.代码实现

1.在头文件中引入 QtSerialPort 类的两个头文件(必须引入)

#include <QtSerialPort/QSerialPort>         // 提供访问串口的功能

#include <QtSerialPort/QSerialPortInfo>     // 提供系统中存在的串口信息

2.在工程文件中添加以下代码

# 引入串口工程类型,pro文件添加

QT   += serialport

3.代码

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this);

    //查找可用的串口

    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())

    {

        qDebug() << "Port Name:" << info.portName();

        QSerialPort serial;

        serial.setPort(info);

        if(serial.open(QIODevice::ReadWrite))

        {

            ui->PortBox->addItem(serial.portName());

            serial.close();

        }

    }

    //设置波特率下拉菜单默认项

    ui->BaudBox->setCurrentIndex(7);

    //关闭发送按钮的使能

    ui->sendButton->setEnabled(false);

}

MainWindow::~MainWindow()

{

    delete ui;

}

//清空接受窗口

void MainWindow::on_clearButton_clicked()

{

    ui->textEdit->clear();

}

//发送数据

void MainWindow::on_sendButton_clicked()

{

    serial->write(ui->textEdit_2->toPlainText().toLatin1());

}

//读取接收到的数据

void MainWindow::Read_Data()

{

    QByteArray buf;

    buf = serial->readAll();

    qDebug() << buf;

    if(!buf.isEmpty())

    {

        QString str = ui->textEdit->toPlainText();

        str+=tr(buf);

        ui->textEdit->clear();

        ui->textEdit->append(str);

    }

    buf.clear();

}

void MainWindow::on_openButton_clicked()

{

    if(ui->openButton->text()==tr("打开串口"))

    {

        serial = new QSerialPort;

        //设置串口名

        serial->setPortName(ui->PortBox->currentText());

        //打开串口

        serial->open(QIODevice::ReadWrite);

        //设置波特率

        serial->setBaudRate(ui->BaudBox->currentText().toInt());

        //设置数据位数

        switch(ui->BitNumBox->currentIndex())

        {

        case 8: serial->setDataBits(QSerialPort::Data8); break;

        default: break;

        }

        //设置奇偶校验

        switch(ui->ParityBox->currentIndex())

        {

        case 0: serial->setParity(QSerialPort::NoParity); break;

        default: break;

        }

        //设置停止位

        switch(ui->StopBox->currentIndex())

        {

        case 1: serial->setStopBits(QSerialPort::OneStop); break;

        case 2: serial->setStopBits(QSerialPort::TwoStop); break;

        default: break;

        }

        //设置流控制

        serial->setFlowControl(QSerialPort::NoFlowControl);

        //关闭设置菜单使能

        ui->PortBox->setEnabled(false);

        ui->BaudBox->setEnabled(false);

        ui->BitNumBox->setEnabled(false);

        ui->ParityBox->setEnabled(false);

        ui->StopBox->setEnabled(false);

        ui->openButton->setText(tr("关闭串口"));

        ui->sendButton->setEnabled(true);

        //连接信号槽

        QObject::connect(serial, &QSerialPort::readyRead, this, &MainWindow::Read_Data);

    }

    else

    {

        //关闭串口

        serial->clear();

        serial->close();

        serial->deleteLater();

        //恢复设置使能

        ui->PortBox->setEnabled(true);

        ui->BaudBox->setEnabled(true);

        ui->BitNumBox->setEnabled(true);

        ui->ParityBox->setEnabled(true);

        ui->StopBox->setEnabled(true);

        ui->openButton->setText(tr("打开串口"));

        ui->sendButton->setEnabled(false);

    }

}

void MainWindow::on_pushButton_clicked()

{

    //刷新可用的串口

    ui->PortBox->clear();

    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())

    {

        QSerialPort serial;

        serial.setPort(info);

        if(serial.open(QIODevice::ReadWrite))

        {

            ui->PortBox->addItem(serial.portName());

            serial.close();

        }

    }

}

4.运行界面

5.modbus 项目工程示例

代码可以在博客资源内下载:https://download.csdn.net/download/xieliru/88850765

(1)client界面

(2)Server界面

http://www.tj-hxxt.cn/news/46209.html

相关文章:

  • 网站流量转换网络销售平台有哪些软件
  • 武汉中网维优网站建设优化厦门网站的关键词自动排名
  • 网站建设公司 未来拼多多搜索关键词排名
  • 专业web网站设计宁波营销型网站建设优化建站
  • 网站建设程序结构seo内容优化是什么意思
  • 保定北京网站建设百度网站推广一年多少钱
  • 佛山门户网站建设公司网络市场的四大特点
  • 个人做网站 用什么语言广州seo关键词优化费用
  • 做网站用后缀好太原seo推广外包
  • 党委网站建设方案佛山外贸seo
  • 个人网站用什么域名好百度推广视频
  • 怎么在网站上做seo福州排名seo公司
  • 做兼职靠谱的网站提高工作效率8个方法
  • 西安知名网站制作公司2345网址导航是病毒吗
  • 在线阅读小说网站怎么做今日的新闻
  • wordpress 文章关联百度搜索引擎seo
  • 网站 dns 解析营销宣传方案
  • 定制网站设计高端网站建设手机百度推广怎么打广告
  • 做网站 要域名 主机 还有啥百度推广管家
  • 衡水电商网站建设价格营销型网站建设易网拓
  • 济南网站建设找凌峰淄博搜索引擎优化
  • 网站建设推广顾问是什么意思百度账号登陆
  • 您身边的网站建设专家百度关键词权重查询
  • 深圳市宝安区中医院seo百度关键字优化
  • 怎么自己做时时彩网站站长工具同大全站
  • 集团公司简介模板湖南seo网站开发
  • 企业网站建设要多久搜狗站长工具平台
  • 什么是网站空间信息seo下载站
  • html5商城网站模板杭州seo哪家好
  • 2017网站开发合同下载百中搜优化