版权声明:若无来源注明,Techie亮博客文章均为原创。 转载请以链接形式标明本文标题和地址:
本文标题:QSerialPort-Qt串口通讯     本文地址:http://techieliang.com/2017/12/534/

1. 介绍

Qt对串口通讯提供了专用类QSerialPort,需要在pro文件增加:QT += serialport,其继承自QIODevice

相关类还有QSerialPortInfo 提供当前设备串口信息

2. QSerialPortInfo

QSerialPortInfo::availablePorts();

可以获取当前设备的所有串口信息,提供了以下操作函数,可获得对应的信息类型。

  1. QString description() const
  2. bool hasProductIdentifier() const
  3. bool hasVendorIdentifier() const
  4. bool isBusy() const
  5. bool isNull() const
  6. QString manufacturer() const
  7. QString portName() const
  8. quint16 productIdentifier() const
  9. QString serialNumber() const
  10. void swap(QSerialPortInfo &other)
  11. QString systemLocation() const
  12. quint16 vendorIdentifier() const

portName一般为“COMX”;Description为描述信息;serialNumber为编号,此号一般不相同可用于串口设备识别。

3. QSerialPort

参考类帮助文档

相关串口配置函数:

  1. bool sendBreak(int duration = 0)
  2. bool setBaudRate(qint32 baudRate, Directions directions = AllDirections)
  3. bool setBreakEnabled(bool set = true)
  4. bool setDataBits(DataBits dataBits)
  5. bool setDataTerminalReady(bool set)
  6. bool setFlowControl(FlowControl flowControl)
  7. bool setParity(Parity parity)
  8. void setPort(const QSerialPortInfo &serialPortInfo)
  9. void setPortName(const QString &name)
  10. void setReadBufferSize(qint64 size)
  11. bool setRequestToSend(bool set)
  12. bool setStopBits(StopBits stopBits)

先配置完成后,调用open可开启串口

阻塞数据读写:

  1. virtual bool open(OpenMode mode)
  2. virtual bool waitForBytesWritten(int msecs = 30000)
  3. virtual bool waitForReadyRead(int msecs = 30000)

同时可以利用QIODevice类的readyRead信号,connect以后可在收到信息后在槽中响应,利用

  1. qint64 read(char *data, qint64 maxSize)
  2. QByteArray read(qint64 maxSize)
  3. QByteArray readAll()

读取内容。

串口可能在发送一串字符时每一个字符收到均有一次readyRead响应,此时需要自行判断终止符。

QSerialPort-Qt串口通讯的更多相关文章

  1. Qt之先用了再说系列-串口通讯(单串口单线程)

    QT 串口通讯(单串口单线程) 串口通讯在我们写程序的时候或多或少会用到,借此在这记录一下QT是如何使用串口来通讯的.本次先侃侃在单线程下使用1个串口来通讯过程.好了,废话不多说,直接看步骤,我们的宗 ...

  2. 树莓派中QT实现串口通讯

    树莓派中QT实现串口通讯 开发平台为QT 此博客QT使用的为WiringPi驱动 我使用的串口调试助手为 cutecom 先简单说一些开发过程中需要注意的问题 Linux 下设备为 tty ,对应在 ...

  3. Qt 串口类QSerialPort 使用笔记

    Qt 串口类QSerialPort 使用笔记 虽然现在大多数的家用PC机上已经不提供RS232接口了.但是由于RS232串口操作简单.通讯可靠,在工业领域中仍然有大量的应用.Qt以前的版本中,没有提供 ...

  4. qt实现串口通讯

    摘要:上位机软件程序通过QT实现,采集输入信息,根据实际需要做出合适的串口通讯协议,实现效果如下图所示: 主要实现的功能: 1.串口基本参数可选,可调 2.显示区域可选择十六进制/asicii码显示, ...

  5. 【转】QT 串口QSerialPort + 解决接收数据不完整问题

    类:QSerialPort 例程:Examples\Qt-5.9.1\serialport\terminal,该例子完美展示了qt串口收发过程,直接在这上面修改就可以得到自己的串口软件.核心方法 // ...

  6. 嵌入式Linux学习笔记(六) 上位机QT界面实现和串口通讯实现

    目录 (1).参考资料 (2).QT界面布局实现 (3).数据和操作逻辑 在上一章我们实现了下位机的协议制定,并通过串口通讯工具完成了对设备内外设(LED)的状态修改,下面就要进行上位机软件的实现了( ...

  7. Qt 串口连接

    Qt 串口连接 使用 Qt 开发上位机程序时,经常需要用到串口,在 Qt 中访问串口比较简单,因为 Qt 已经提供了 QSerialPort 和 QSerialPortInfo 这两个类用于访问串口. ...

  8. Qt 串口通信

    在Qt5之前,串口通信基本依赖于第三方库,下面是我曾接触过的串口通信类库: 名称 语言 平台   QextSerialPort QT C++ Win/Linux http://sourceforge. ...

  9. Qt串口通信

    1. Qt串口通信类QSerialPort 在Qt5的的更新中,新增了串口通信的相关接口类QSerialPort,这使得在开发者在使用Qt进行UI开发时,可以更加简单有效地实现串口通信的相关功能. 开 ...

随机推荐

  1. s3c2440存储控制器详解

    从上图可知,外部内存类的设备与存储管理器相连,那么CPU是怎样访问到内存的呢?通过存储管理器.CPU比较单纯,只会按照指令执行,CPU只负责发出地址,怎样找到内存类设备呢?这些都交给存储管理器来管理. ...

  2. Linux C 语言之 Hello World 详解

    目录 Linux C 语言之 Hello World 详解 第一个 C 语言程序 程序运行原理 编译,链接 运行时 链接库 编译器优化 Hello World 打印原理 stdout, stdin 和 ...

  3. 清华大学《C++语言程序设计基础》线上课程笔记03---数据的共享和保护&数组

    数据的共享和保护 对象的生存期 static类型的局部变量,生存期在整个程序,局部可见. void example() { static a=1; int b=2 } 当调用完example函数后,b ...

  4. 嵌入式Linux 网络编程

    涉及到的数据结构: 下面首先介绍两个重要的数据类型:sockaddr和sockaddr_in,这两个结构类型都是用来保存socket地址信息的 定义如下所示: struct sockaddr { un ...

  5. ASP.NET Web Form 与 ASP.NET MVC 区别

    Asp.net 微软提供web开发框架或者技术.分Web Form和ASP.NET MVC.下面简单说明各自优缺点及使用场景. Web Form ASP.NET Webform提供了一个类似于winf ...

  6. ZooKeeper典型使用场景一览

    场景类别 典型场景描述(ZK特性,使用方法) 应用中的具体使用 数据发布与订阅 发布与订阅即所谓的配置管理,顾名思义就是将数据发布到zk节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新 ...

  7. 20155236 《Java程序设计》实验二实验报告

    20155236 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验内容及步骤 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 ...

  8. 【信息安全】MD5加密浅析

    前段时间,网传京东泄露了几G的用户数据,后面又说用户数据是MD5加密的,让大家不要担心,改个密码之类云云. 出于好奇,上网了解了一下这个MD5. 一.MD5加密方式是什么 简单讲,MD5加密是一个用到 ...

  9. MySQL入门篇(七)之Xtrabackup备份与恢复

    一.Xtrabackup介绍 MySQL冷备.mysqldump.MySQL热拷贝都无法实现对数据库进行增量备份.在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况 ...

  10. python的pip升级问题

    近来由于pip升级为10.0.1了,导致使用pip命令报错,使用过很多方法,最终找到一种相对靠谱的方法,一下是步骤: 进入https://pypi.python.org/pypi/pip 下载pip- ...