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. 卸载linux订阅包

    message日志信息: Oct :: oracledb1 rhsmd: In order for Subscription Manager to provide your system with u ...

  2. OGG_GoldenGate数据传递文件Trial(案例)

    2014-03-05 Created By BaoXinjian

  3. 进程在Linux内核中的角色扮演

    在Linux内核中,内核将进程.线程和内核线程一视同仁,即内核使用唯一的数据结构task_struct来分别表示他们:内核使用相同的调度算法对这三者进行调度:并且内核也使用同一个函数do_fork() ...

  4. Linux内核(3) - 分析内核源码如何入手(下)

    下面的分析,米卢教练说了,内容不重要,重要的是态度.就像韩局长对待日记的态度那样,严谨而细致. 只要你使用这样的态度开始分析内核,那么无论你选择内核的哪个部分作为切入点,比如USB,比如进程管理,在花 ...

  5. jenkins 发送邮件失败

    jenkins 配置发送邮件,发送测试邮件,邮件发送失败: Failed to send out e-mail javax.mail.MessagingException: Could not con ...

  6. [hihoCoder] 骨牌覆盖问题·一

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具.今天我们要研究的是骨牌的覆盖问题:我们有一个2xN的长条形棋盘,然后用1x2的骨牌去覆盖整个棋盘.对 ...

  7. android的一些控件

    原来朋友给过的一个 显示时间的 样例,还能够改动时间,可是要机子有root权限才干改动. 在这个时间表盘的样例基础上 改动改动  图片.背景图什么的      就能够达到自己想要的效果了.. 下载地址 ...

  8. ModelSim之tcl自动化仿真

    摘要: ModelSim的tcl最大的优势就在于它可以让整个仿真自动运行,免除每次进行各种用户界面控制操作的麻烦.用tcl就可以自动完成建库.映射库到物理目录.编译源代码.启动仿真器.运行仿真等一系列 ...

  9. 恶意程序入侵 dbuspm-session 发现了新的方法制这种恶意程序

    直接从一台没服务器上把这两文件scp到当前的服务器上并替换这两个程序就ok了!!!!这种方法测试成功!!!! 出现了一个比效麻烦的事,服务器的负载正常,内存也正常,但就是很卡. 通过查找到线索:htt ...

  10. 快速写excel的方法

    对于用com组件写excel,笔者表示那个太慢了.而且很耗资源,还要装excel. 今天我们就用写文本文件的方式来写excel. 步骤1,用excel写好一个设计一个我们想要的模板. 步骤2,我们把做 ...