Qt中的串口编程之一

2023-10-31

                   QtSerialPort

简介

         QtSerialPort模块是Qt5库的附加部分,为硬件和虚拟的串口提供了统一的接口。注意:该模块也增加了对Qt4的支持。
        串口由于其简单和可靠,目前在像嵌入式系统,机器人等工业中依旧用得很多。使用QtSerialPort模块,开发者可以大大缩短开发串口相关的应用程序的周期。使用QtSerialPort模块最初是来源于第三方库QSerialDevice(2.0分支),现在QtSerialPort已经移到了https://codereview.qt-project.org/代码库上。

功能介绍

目前,该模块API只包括两个类:Serial和SerialPortInfo。

【SerialPort】

SerialPort是该模块的基础类,提供了一系列基础的方法和属性来访问串口资源。

SerialPort类对操作系统的支持如下:


对Symbian平台的支持只是部分的,是因为缺乏开发者,因为诺基亚已经决定放弃该平台,Qt5也不会包括对该平台的支持。

【SerialPortInfo】

SerialPortInfo是一个帮助类。它提供了系统上可用的串口的信息。

SerialPortInfo类对操作系统的支持如下:


对Symbian平台的支持只是部分的,是因为缺乏开发者,因为诺基亚已经决定放弃该平台,Qt5也不会包括对该平台的支持。

源代码

目前,QtSerialPort相关的源代码都可以通过浏览器浏览:https://qt.gitorious.org/qt/qtserialport
也可以通过git下载:git clone git://gitorious.org/qt/qtserialport.git

编译和安装

注意:最好选择影子构建,因为这样的话构建目录和源代码目录是分开的,这样就允许你保持源代码目录是干净的。
编译步骤:

1、配置编译环境

*安装Perl
*确保环境变量设置正确:Qt4/Qt5;编译器;Perl
*创建编译目录:跟源代码目录同级
/
|- /serialport-src
|- /serialport-build

2、Perl只是在Qt5的时候才需要,Qt4的情况下可以不配置

3、使用如下推荐步骤在Qt4/Qt5下编译和安装QtSerialPort库

cd serialport-build
qmake ../serialport-src/qtserialport.pro
make [or 'nmake' for MSVC compiler, or 'mingw32-make' for MinGW compiler]
make install [or 'nmake install' for MSVC compiler, or 'mingw32-make install' for MinGW compiler]
注意:在*nix系统上,你可能需要超级用户的权限才能执行安装这一步骤:
sudo make install

使用方法

QtSerialPort提供相应的库文件,我们在编写自己的应用程序的时候可以使用这些库,使用方法如下:
Qt4
CONFIG += serialport
Qt5
QT += serialport
然后在工程中包含相应的头文件就行:
...
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
...
示例代码
[cpp]   view plain  copy
  1. <span style="font-size:14px;">#include <QtCore/QCoreApplication>  
  2. #include <QtCore/QDebug>  
  3.    
  4. #include <QtSerialPort/QSerialPort>  
  5. #include <QtSerialPort/QSerialPortInfo>  
  6.    
  7. QT_USE_NAMESPACE  
  8.    
  9. int main(int argc, char *argv[])  
  10. {  
  11.     QCoreApplication a(argc, argv);  
  12.    
  13.     // Example use QSerialPortInfo  
  14.     foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {  
  15.         qDebug() << "Name        : " << info.portName();  
  16.         qDebug() << "Description : " << info.description();  
  17.         qDebug() << "Manufacturer: " << info.manufacturer();  
  18.    
  19.         // Example use QSerialPort  
  20.         QSerialPort serial;  
  21.         serial.setPort(info);  
  22.         if (serial.open(QIODevice::ReadWrite))  
  23.             serial.close();  
  24.     }  
  25.      
  26.     return a.exec();  
  27. }</span>  

注意:CONFIG += serialport必须是.pro文件中的第一行或者第二行。

实际操作

1、代码下载:


2、编译:


3、安装:

sudo make install后,我的系统上因为设置了Qt5的环境变量:

头文件安装到了:/opt/Qt5.0.1/5.0.1/gcc/include/QtSerialPort

库文件安装到了:/opt/Qt5.0.1/5.0.1/gcc/lib

4、测试,运行自带的examples:


4、使用QSerialPort库

(1)创建一个Qt Console应用程序

修改.pro文件,添加serialport库,如下:


(2)修改main函数

如下:添加QtSerialPort库的相应头文件,并实现简单的代码:

[cpp]   view plain  copy
  1. <span style="font-size:14px;">#include <QCoreApplication>  
  2. #include <QtCore/QDebug>  
  3. #include "QSerialPort"  
  4. #include "QSerialPortInfo"  
  5.   
  6. int main(int argc, char *argv[])  
  7. {  
  8.     QCoreApplication a(argc, argv);  
  9.       
  10.     // Example use QSerialPortInfo  
  11.     foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {  
  12.         qDebug() << "Name        : " << info.portName();  
  13.         qDebug() << "Description : " << info.description();  
  14.         qDebug() << "Manufacturer: " << info.manufacturer();  
  15.   
  16.         // Example use QSerialPort  
  17.         QSerialPort serial;  
  18.         serial.setPort(info);  
  19.         if (serial.open(QIODevice::ReadWrite))  
  20.             serial.close();  
  21.     }  
  22.   
  23.     return a.exec();  
  24. }</span>  

(3)编译后运行如下:





FROM:  http://blog.csdn.net/chenlong12580/article/details/8976176



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt中的串口编程之一 的相关文章

随机推荐

  • OpenWrt 软路由解析公网IPV6域名访问家庭NAS的问题答疑

    1 非要使用 Padavan 或者 OpenWrt固件的软路由才能IPV6公网访问吗 答 这个并不是这样的 一般家用路由器都无法放行防火墙规则 这种情况当然无法实现IPV6公网访问 但是少部分路由器是可以的 只要有防火墙设置功能基本都可以
  • Basic Level 1022 D进制的A+B (20分)

    题目 输入两个非负10进制整数 A A A和 B 2 30
  • define( )和defined( )函数的区别

    PHP中define 函数用来定义一个常量 而defined 函数用来检验常量是否存在 存在则返回true 否则返回false
  • C语言基础入门详解一

    前些天发现了一个蛮有意思的人工智能学习网站 8个字形容一下 通俗易懂 风趣幽默 感觉非常有意思 忍不住分享一下给大家 点击跳转到教程 前言 初识C语言 include 相当于java的import stdio全称 standard inpu
  • Python3 IDLE打不开,点击之后没反应

    python 2 IDLE打不开见python2 IDLE启动失败 电脑同时装了python2和python3 python2IDLE能打开 python3打不开 出现这种情况多半是环境变量配置有问题 直接打开IDLE看不到报错 可在命令行
  • 我的Github开源项目,从0到20000 Star!

    最近 我在Github上面开源的项目mall已经突破了20000 Star 这个项目是2018年3月份开始开发的 耗时9个月 发布了第一个版本 一直维护至今 回想起来 还是有诸多感慨的 下面我就谈谈我的项目发展的整个历程 项目发展历程 为什
  • jpg图片转pdf都有哪些工具?分享最简单的方法

    在互联网时代 JPG图片在我们的日常生活中变得越来越普遍 虽然在网上传输图片非常方便 但有时候我们需要将图片打印出来 这时候直接打印图片可能会导致失真 而且图片的大小和样式也不容易确定 将JPG图片转换成PDF格式 然后再打印 可以方便地解
  • Qt打包生成可执行程序

    一 为什么QT要打包和部署 因为我们要把写好的程序发给用户来用 我们写好的源码也不是随便给别人的 二 QT如何打包和部署 1 我们把工厂切换到release模式 然后编译 release模式 基本没有调试信息 debug模式 有很多调试信息
  • STM32学习:通过DMA读取ADC规则通道多通道转换数据

    1 STM32的DMA简介 直接存储器存取 DMA 用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输 无须CPU干预 数据可以通过DMA快速地移动 这就节省了CPU的资源来做其他操作 两个DMA控制器有12个通道 DMA1有7
  • MATLAB基本运算

    算术运算 1 基本运算符 加 减 乘 右除 左除 乘方 MATLAB的算术运算是在矩阵意义下进行的 单个数据的算术运算只是矩阵运算的一种特例 加减运算 若两矩阵同型 则运算时两矩阵的相应元素相加减 若两矩阵不同型 则MATLAB将给出错误信
  • 《科研伦理与学术规范》期末考试答案2023

    1 单选 2 分 关于科研伦理描述不正确的说法是 A 规范则未必均是在道德层面上具有调整性 B 伦理学已经从传统的以人为中心走向现代的以行为为中心 C 现代伦理学主要关注以行为 准则 规范 义务 D 所有的规范的评判都涉及到 善恶正邪 的价
  • C#实现QQ窗体功能

    C 实现QQ窗体功能 案例简述 预备知识导图 功能结构 知识点分析 C 基础知识 Windows系统知识 控件和组件 案例简述 通过C 使用类似QQ窗体的功能 当窗体放置到屏幕的边缘 可以将窗体隐藏 当鼠标再次放置到屏幕边缘时 窗体可再次显
  • centos安装docker详细步骤

    目录 一 前言 1 环境要求 2 官网中文安装参考手册 二 安装步骤 1 卸载旧版本 2 安装需要的软件包 3 设置docker镜像源 1 配置docker镜像源 方式1 官网地址 外国 方式2 阿里云源 2 查看配置是否成功 4 更新yu
  • 使用sklearn完成4种基本的分类算法:朴素贝叶斯算法、决策树算法、人工神经网络、支持向量机算法

    文章目录 实验目的 实验内容及步骤 实验数据说明 实验过程 朴素贝叶斯分类 决策树 决策树概念简介 神经网络 SVM 实验目的 巩固4种基本的分类算法的算法思想 朴素贝叶斯算法 决策树算法 人工神经网络 支持向量机算法 能够使用现有的分类器
  • iOS编程基础-Swift(四)-对象类型(续)

    Swift iOS9 Programming Fundamentals With swift 第四章 对象类型 第三章介绍了一些内建对象类型 不过还没有谈及对象类型本身 即 枚举 结构体 和 类 本章结构 1 介绍一下对象类型 2 详细介绍
  • 时空RBF-NN预测混沌时间序列

    时空RBF NN预测混沌时间序列 混沌理论是现代非线性动力学研究的重要分支之一 混沌现象不仅存在于物理系统中 还出现在金融 生物等领域中 混沌时间序列的预测一直是研究者关注的焦点 本文提出了一种基于时空RBF NN的混沌时间序列预测方法 并
  • OMA DM终端管理

    居然还有这个东西 今天才知道 好强大 OMA全称是Open Mobile Alliance 即开放移动联盟 成立于2002年7月 由近200家公司组成 它的目的是搜集市场需求 规范业务应用层和网络功能层之间的接口 定义一个公开的标准框架 从
  • web项目时Spring监听器配置

    问题 每次使用ClassPathXmlApplicationContext 和getBean 方法时 都会加载spring配置文件 影响性能 解决方案 1 在服务器启动的时候 创建对象加载配置文件 2 底层使用监听器 listener 和S
  • ISE中FIFO IP核的Standard FIFO和First-word-Fall-Through模式的仿真比较

    ISE下的FIFO IP核有Standard FIFO和First word Fall Through两种模式 相对于标准模式FWFT First word Fall Through 可以不需要读命令 自动的将最新数据放在dout上 接下来
  • Qt中的串口编程之一

    QtSerialPort 简介 QtSerialPort模块是Qt5库的附加部分 为硬件和虚拟的串口提供了统一的接口 注意 该模块也增加了对Qt4的支持 串口由于其简单和可靠 目前在像嵌入式系统 机器人等工业中依旧用得很多 使用QtSeri