1. QtSerialPort
    1. 简介
    2. 功能介绍
      1. SerialPort
      2. SerialPortInfo
    3. 源代码
    4. 编译和安装
      1. 配置编译环境
      2. Perl只是在Qt5的时候才需要Qt4的情况下可以不配置
      3. 使用如下推荐步骤在Qt4Qt5下编译和安装QtSerialPort库
    5. 使用方法
    6. 实际操作
      1. 代码下载
      2. 编译
      3. 安装
      4. 测试运行自带的examples
      5. 使用QSerialPort库
        1. 1创建一个Qt Console应用程序
        2. 2修改main函数
        3. 3编译后运行如下

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>
...
示例代码

#include <QtCore/QCoreApplication>
#include <QtCore/QDebug> #include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo> QT_USE_NAMESPACE int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv); // Example use QSerialPortInfo
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
qDebug() << "Name : " << info.portName();
qDebug() << "Description : " << info.description();
qDebug() << "Manufacturer: " << info.manufacturer(); // Example use QSerialPort
QSerialPort serial;
serial.setPort(info);
if (serial.open(QIODevice::ReadWrite))
serial.close();
} return a.exec();
}

注意: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:

5、使用QSerialPort库

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

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

(2)修改main函数

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

#include <QtCore/QDebug>
#include "QSerialPort"
#include "QSerialPortInfo" int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv); // Example use QSerialPortInfo
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
qDebug() << "Name : " << info.portName();
qDebug() << "Description : " << info.description();
qDebug() << "Manufacturer: " << info.manufacturer(); // Example use QSerialPort
QSerialPort serial;
serial.setPort(info);
if (serial.open(QIODevice::ReadWrite))
serial.close();
} return a.exec();
}

(3)编译后运行如下:

转自:http://blog.csdn.net/chenlong12580/article/details/8976176#t18

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

  1. Qt中的串口编程之三

    QtSerialPort 今天我们来介绍一下QtSerialPort模块的源代码,学习一下该可移植的串口编程库是怎么实现的. 首先,我们下载好了源代码之后,使用QtCreator打开整个工程,可以看到 ...

  2. QT中的SOCKET编程(QT-2.3.2)

    转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/ QT中的SOCKET编程 2008-10-07 23:13 ...

  3. QT中的SOCKET编程

    转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/ QT中的SOCKET编程 2008-10-07 23:13 ...

  4. Qt中的多线程编程

    http://www.ibm.com/developerworks/cn/linux/l-qt-mthrd/ Qt 作为一种基于 C++ 的跨平台 GUI 系统,能够提供给用户构造图形用户界面的强大功 ...

  5. <QT障碍之路>qt中使用串口类接收数据不完整

    问题:当用QT中的serial->readAll()的时候,不会把全部的数据一次性都读取出来,而是阶段性的.原因是因为当串口有信号时候,readyRead()信号就会被抛出,那么一帧完整的数据帧 ...

  6. 5.关于QT中的网络编程,QTcpSocket,QUdpSocket

     1 新建一个项目:TCPServer.pro A  修改TCPServer.pro,注意:如果是想使用网络库,需要加上network SOURCES += \ TcpServer.cpp \ T ...

  7. qt中的udp编程

    UDP QUdpSocket ---> upd socket 1.创建 QUdpSocket *p = new QUdpSocket(); 2.最先接收数据一方 调用bind-> ip/p ...

  8. qt中的tcp编程

    server .server.h #define DIALOG_H #include <QDialog> #include <QTcpServer> #include < ...

  9. Qt 多线程和网络编程学习

    一,Qt多线程类学习 QThread类,开始一个新的线程就是开始执行重新实现QThread::run(),run()是默认现实调用exec(),QThread::start()开始线程的执行,run( ...

随机推荐

  1. STL应用之set

    之前在解决一道算法题的时候,应用到set,特意对这个stl的容器类做了一些了解.在我的印象中,set就是一个元素不重复的集合,而事实上也正是这样的.无论从MSDN还是任何其它地方,都会告诉我们set的 ...

  2. ISCC2014-reverse

    这是我做reverse的题解.在咱逆向之路上的mark一下,,水平有限,大牛见笑. 题目及题解链接:http://pan.baidu.com/s/1gd3k2RL 宗女齐姜 果然是仅仅有50分的难度, ...

  3. Composer更新慢的终极解决方案

    Packagist 镜像 请各位使用本镜像的同学注意: 本镜像已经依照 composer 官方的数据源安全策略完全升级并支持 https 协议!请各位同学 按照下面所示的两个方法将  还没安装 Com ...

  4. 批处理学习笔记9 - 深入学习For命令2

    这一篇是对于for /f的扩展,上一篇说道/f可以读txt文件里的数据.这里了解下tokens和delims功能 平常文本文件保存数据经常用这样的格式 avi|wmv|rm|mkv|mp4 以读取这个 ...

  5. codeforces 482B. Interesting Array【线段树区间更新】

    题目:codeforces 482B. Interesting Array 题意:给你一个值n和m中操作,每种操作就是三个数 l ,r,val. 就是区间l---r上的与的值为val,最后问你原来的数 ...

  6. nfs missing codepage or helper program, or other error

    [root@xxxxx ~]# /bin/mount -t nfs -o nosuid,noexec,nodev,noatime,intr,rsize=,wsize= xxx.xxx.xxx.xxx: ...

  7. lua内存管理

    本文内容基于版本:Lua 5.3.0 Lua内存管理器规则 Lua允许用户自定义内存管理器,并在创建Lua虚拟机(lua_State实例)时传入.当然自定义内存管理器必须遵循Lua已定义的一些行为规则 ...

  8. 使用OleDB组件连接和访问Oracle数据库

    访问 Oracle 数据库的步骤 .在 Oracle 中,创建一个名为 TestTable 的表,如下所示: Create Table TestTable (c1 )); .将数据插入到 TestTa ...

  9. 怎么查看eclipse是否支持maven

    打开eclipse,选择Windows->Preferences 查看Preferences下是否有Maven即可

  10. MSVC與CRT的恩怨情仇

    很久沒有寫程式設計入門知識的相關文章了,這篇文章要來談談程式庫 (Library) 連結,以及關於 MSVC 與 CRT 之間的種種恩怨情仇. 如果你使用的作業系統是 Linux.Mac 或其他非 W ...