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

沈阳网站开发集团一个公司可以做几个百度推广

沈阳网站开发集团,一个公司可以做几个百度推广,郴州市新闻网最新消息,现在哪个行业做网站需求多点Qt串口编程Serial Port 思维导图在线高清查看:https://www.helloimg.com/i/2025/01/26/6796301b157a0.png 资源简介 出厂系统配置 正点原子的 I.MX6U 开发板的出厂系统中,已经预先配置了两路串口 串口分配 调试串口 UART1:这一路串口被…

Qt串口编程Serial Port

思维导图在线高清查看:https://www.helloimg.com/i/2025/01/26/6796301b157a0.png
在这里插入图片描述

资源简介

出厂系统配置

  • 正点原子的 I.MX6U 开发板的出厂系统中,已经预先配置了两路串口

串口分配

  • 调试串口 UART1:这一路串口被指定为调试用途,对应于系统中的设备节点 /dev/ttymxc0

  • 通用串口 UART3:另一路串口是 UART3,对应于系统中的设备节点 /dev/ttymxc2

编程限制

  • 由于 UART1 已经被用作调试串口,因此在编程时我们无法使用它,只能选择对 UART3 进行编程

应用实例

使用串口,需要在 pro 项目文件中添加串口模块的支持

  • 项目文件文件第一行添加的代码部分如下

  • QT += core gui serialport

  • 添加的 serialport 就是串口模块的支持

mainwindow.h

  • #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

class MainWindow : public QMainWindow
{
Q_OBJECT

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

private:
/* 串口对象 */
QSerialPort *serialPort;

/* 用作接收数据 */
QTextBrowser *textBrowser;/* 用作发送数据 */
QTextEdit *textEdit;/* 按钮 */
QPushButton *pushButton[2];/* 下拉选择盒子 */
QComboBox *comboBox[5];/* 标签 */
QLabel *label[5];/* 垂直布局 */
QVBoxLayout *vboxLayout;/* 网络布局 */
QGridLayout *gridLayout;/* 主布局 */
QWidget *mainWidget;/* 设置功能区域 */
QWidget *funcWidget;/* 布局初始化 */
void layoutInit();/* 扫描系统可用串口 */
void scanSerialPort();/* 波特率项初始化 */
void baudRateItemInit();/* 数据位项初始化 */
void dataBitsItemInit();/* 检验位项初始化 */
void parityItemInit();/* 停止位项初始化 */
void stopBitsItemInit();

private slots:
void sendPushButtonClicked();
void openSerialPortPushButtonClicked();
void serialPortReadyRead();
};
#endif // MAINWINDOW_H

  • 声明需要用到的变量,方法及槽函数

mainwindow.cpp

  • #include “mainwindow.h”
    #include
    #include
    #include
    #include
MainWindow::MainWindow(QWidget *parent)
QMainWindow(parent)
{
/* 布局初始化 */
layoutInit();
/* 扫描系统的串口 */
scanSerialPort();/* 波特率项初始化 */
baudRateItemInit();/* 数据位项初始化 */
dataBitsItemInit();/* 检验位项初始化 */
parityItemInit();/* 停止位项初始化 */
stopBitsItemInit();

}

void MainWindow::layoutInit()
{
/* 获取屏幕的分辨率,Qt官方建议使用这
* 种方法获取屏幕分辨率,防上多屏设备导致对应不上
* 注意,这是获取整个桌面系统的分辨率
*/
QList <QScreen *> list_screen = QGuiApplication::screens();

/* 如果是ARM平台,直接设置大小为屏幕的大小 */

#if arm
/* 重设大小 /
this->resize(list_screen.at(0)->geometry().width(),
list_screen.at(0)->geometry().height());
#else
/
否则则设置主窗体大小为800x480 /
this->resize(800, 480);
#endif
/
初始化 */
serialPort = new QSerialPort(this);
textBrowser = new QTextBrowser();
textEdit = new QTextEdit();
vboxLayout = new QVBoxLayout();
funcWidget = new QWidget();
mainWidget = new QWidget();
gridLayout = new QGridLayout();

/* QList链表,字符串类型 */
QList <QString> list1;
list1<<"串口号:"<<"波特率:"<<"数据位:"<<"检验位:"<<"停止位:";for (int i = 0; i < 5; i++) {label[i] = new QLabel(list1[i]);/* 设置最小宽度与高度 */label[i]->setMinimumSize(80, 30);/* 自动调整label的大小 */label[i]->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);/* 将label[i]添加至网格的坐标(0, i) */gridLayout->addWidget(label[i], 0, i);
}for (int i = 0; i < 5; i++) {comboBox[i] = new QComboBox();comboBox[i]->setMinimumSize(80, 30);/* 自动调整label的大小 */comboBox[i]->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);/* 将comboBox[i]添加至网格的坐标(1, i) */gridLayout->addWidget(comboBox[i], 1, i);
}/* QList链表,字符串类型 */
QList <QString> list2;
list2<<"发送"<<"打开串口";for (int i = 0; i < 2; i++) {pushButton[i] = new QPushButton(list2[i]);pushButton[i]->setMinimumSize(80, 30);/* 自动调整label的大小 */pushButton[i]->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);/* 将pushButton[0]添加至网格的坐标(i, 5) */gridLayout->addWidget(pushButton[i], i, 5);
}
pushButton[0]->setEnabled(false);/* 布局 */
vboxLayout->addWidget(textBrowser);
vboxLayout->addWidget(textEdit);
funcWidget->setLayout(gridLayout);
vboxLayout->addWidget(funcWidget);
mainWidget->setLayout(vboxLayout);
this->setCentralWidget(mainWidget);/* 占位文本 */
textBrowser->setPlaceholderText("接收到的消息");
textEdit->setText("www.openedv.com");/* 信号槽连接 */
connect(pushButton[0], SIGNAL(clicked()),this, SLOT(sendPushButtonClicked()));
connect(pushButton[1], SIGNAL(clicked()),this, SLOT(openSerialPortPushButtonClicked()));connect(serialPort, SIGNAL(readyRead()),this, SLOT(serialPortReadyRead()));

}

void MainWindow::scanSerialPort()
{
/* 查找可用串口 */
foreach (const QSerialPortInfo &info,
QSerialPortInfo::availablePorts()) {
comboBox[0]->addItem(info.portName());
}
}

void MainWindow::baudRateItemInit()
{
/* QList链表,字符串类型 */
QList list;
list<<“1200”<<“2400”<<“4800”<<“9600”
<<“19200”<<“38400”<<“57600”
<<“115200”<<“230400”<<“460800”
<<“921600”;
for (int i = 0; i < 11; i++) {
comboBox[1]->addItem(list[i]);
}
comboBox[1]->setCurrentIndex(7);
}

void MainWindow::dataBitsItemInit()
{
/* QList链表,字符串类型 */
QList list;
list<<“5”<<“6”<<“7”<<“8”;
for (int i = 0; i < 4; i++) {
comboBox[2]->addItem(list[i]);
}
comboBox[2]->setCurrentIndex(3);
}

void MainWindow::parityItemInit()
{
/* QList链表,字符串类型 */
QList list;
list<<“None”<<“Even”<<“Odd”<<“Space”<<“Mark”;
for (int i = 0; i < 5; i++) {
comboBox[3]->addItem(list[i]);
}
comboBox[3]->setCurrentIndex(0);
}

void MainWindow::stopBitsItemInit()
{
/* QList链表,字符串类型 */
QList list;
list<<“1”<<“2”;
for (int i = 0; i < 2; i++) {
comboBox[4]->addItem(list[i]);
}
comboBox[4]->setCurrentIndex(0);
}

void MainWindow::sendPushButtonClicked()
{
/* 获取textEdit数据,转换成utf8格式的字节流 */
QByteArray data = textEdit->toPlainText().toUtf8();
serialPort->write(data);
}

void MainWindow::openSerialPortPushButtonClicked()
{
if (pushButton[1]->text() == “打开串口”) {
/* 设置串口名 /
serialPort->setPortName(comboBox[0]->currentText());
/
设置波特率 /
serialPort->setBaudRate(comboBox[1]->currentText().toInt());
/
设置数据位数 /
switch (comboBox[2]->currentText().toInt()) {
case 5:
serialPort->setDataBits(QSerialPort::Data5);
break;
case 6:
serialPort->setDataBits(QSerialPort::Data6);
break;
case 7:
serialPort->setDataBits(QSerialPort::Data7);
break;
case 8:
serialPort->setDataBits(QSerialPort::Data8);
break;
default: break;
}
/
设置奇偶校验 /
switch (comboBox[3]->currentIndex()) {
case 0:
serialPort->setParity(QSerialPort::NoParity);
break;
case 1:
serialPort->setParity(QSerialPort::EvenParity);
break;
case 2:
serialPort->setParity(QSerialPort::OddParity);
break;
case 3:
serialPort->setParity(QSerialPort::SpaceParity);
break;
case 4:
serialPort->setParity(QSerialPort::MarkParity);
break;
default: break;
}
/
设置停止位 /
switch (comboBox[4]->currentText().toInt()) {
case 1:
serialPort->setStopBits(QSerialPort::OneStop);
break;
case 2:
serialPort->setStopBits(QSerialPort::TwoStop);
break;
default: break;
}
/
设置流控制 */
serialPort->setFlowControl(QSerialPort::NoFlowControl);
if (!serialPort->open(QIODevice::ReadWrite))
QMessageBox::about(NULL, “错误”,
“串口无法打开!可能串口已经被占用!”);
else {
for (int i = 0; i < 5; i++)
comboBox[i]->setEnabled(false);
pushButton[1]->setText(“关闭串口”);
pushButton[0]->setEnabled(true);
}
} else {
serialPort->close();
for (int i = 0; i < 5; i++)
comboBox[i]->setEnabled(true);
pushButton[1]->setText(“打开串口”);
pushButton[0]->setEnabled(false);
}
}

void MainWindow::serialPortReadyRead()
{
/* 接收缓冲区中读取数据 */
QByteArray buf = serialPort->readAll();
textBrowser->insertPlainText(QString(buf));
}

MainWindow::~MainWindow()
{
}

  • 界面布局初始化设置(第29~121行)

    • 界面布局初始化设置(第29~121行)

    • 使用垂直布局和网格布局

  • 查找系统可用的串口(第123~130行)

    • 查找系统中可用的串口

    • 将串口名添加到 comboBox[0] 中

  • 波特率初始化(第132~144行)

    • 预设常用波特率,默认选项为115200

    • 添加波特率到 comboBox[1] 中

  • 数据位项初始化(第146~155行)

    • 设置默认数据位为8
  • 校验位项初始化(第157~166行)

    • 默认设置为无校验位
  • 停止位项初始化(第168~177行)

    • 默认停止位为1
  • 发送数据(第179~184行)

    • 点击发送按钮时触发发送数据操作
  • 打开或者关闭串口(第186~256行)

    • 按设置的项使用 Qt 串口提供的方法(如 setDataBits(QSerialPort::DataBits) 等)

    • 按第188~239行步骤设置串口参数后即可打开或关闭串口

  • 读取数据(第258~263行)

    • 从缓冲区中读取数据

    • 将读取的数据显示到 textBrowser 中

程序运行效果

http://www.hkea.cn/news/163987/

相关文章:

  • 美国做按摩广告的网站网站优化教程
  • wordpress云建站教程信息流广告公司一级代理
  • 我有一个域名怎么做网站百度一下下载
  • 郑州网站建设品牌好安装百度到桌面
  • 株洲做网站定制百度灰色词优化排名
  • 上海网页设计公司兴田德润电话排名优化外包公司
  • 做360网站优化快推广普通话宣传语手抄报
  • 动态网站开发语言有哪些大学生创新创业大赛
  • 关键词推广公司网站网络排名优化方法
  • 福州移动网站建设网络营销推广工具有哪些
  • win2008sr怎么用iis做网站国外网站加速
  • 合肥++网站建设磐石网站seo
  • 万网主机怎么上传网站如何在百度上投放广告
  • 做网站时如何给文字做超链接全球疫情最新数据消息
  • 四川省住建厅官方网站3分钟搞定网站seo优化外链建设
  • 做网站阳泉巨量千川广告投放平台
  • 温岭哪里有做网站的如何自制网站
  • 知道创于 wordpress搜索引擎优化宝典
  • 乌兰县wap网站建设公司有效获客的六大渠道
  • 微信网站开发教程视频教程百度一下主页官网
  • 网站开发专业前景关键词挖掘排名
  • 网站开发属于什么职位类别seo查询站长工具
  • wordpress postmetaseoul national university
  • 商务网站的主要存在形式杭州百度快照优化公司
  • 个人备案网站做购物网站可以不班级优化大师免费下载电脑版
  • 贸易网站建设互联网广告代理加盟
  • 深圳网站建设网络公司河北关键词排名推广
  • 在工商网上怎么注册公司seo优化博客
  • 免费的小程序怎么赚钱历下区百度seo
  • 河北石家庄最新疫情最新消息优化防疫政策