Qt 串口通信

原创 2016年06月01日 21:42:15

开发环境 Qt5.5.1、Qt Creator 3.5.1

1、创建项目 ( QtSerialDemo )

2、添加组件——修改 “项目名.pro” ( QtSerialDemo.pro ) ,添加

QT += serialport

3、添加如下使用 “Qt串口” 所需的头文件

#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

4、主要串口通讯方法

(1)枚举与当前设备连接的所有串口,如果发现是所需要的串口 ( COM4 ),则将串口接收数据的信号与自定义的槽函数readyReadSlot()进行绑定,在槽函数readyReadSlot()中处理接收到的数据。

bool QtDemoWindow::initSerial()
{
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
        qDebug() << "Name        : " << info.portName();
        qDebug() << "Description : " << info.description();
        qDebug() << "Manufacturer: " << info.manufacturer();
        qDebug() << "serialNumber" << info.serialNumber();

        serial.setPort(info);
        int result =  QString::localeAwareCompare(info.portName(), "COM4");
        qDebug()<<"result = "<<result;
        if(result == 0) {
            if(serial.open(QIODevice::ReadWrite)) {
                qDebug()<<"serial open";
                serial.setBaudRate(QSerialPort::Baud9600);
                serial.setDataBits(QSerialPort::Data8);
                serial.setStopBits(QSerialPort::OneStop);
                serial.setParity(QSerialPort::OddParity);
                serial.setFlowControl(QSerialPort::SoftwareControl);
                serial.clearError();
                serial.clear();
                connect(&serial, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
		return true;
            }
        }
    }
return false;
}
(2)处理收到的数据,这里只是简单打印收到的数据,需要替换为实际处理方法。

void QtDemoWindow::readyReadSlot()
{
    QByteArray arr = serial.readAll();
    qDebug()<<arr;
}
(3)发送数据

void QtDemoWindow::serialSendData()
{
    if(serial.isOpen()) {
        if(serial.isDataTerminalReady()) {
            serial.write("isDataTerminalReady true");
        } else {
            qDebug()<<"DataTerminal not Ready";
        }
    } else {
        qDebug()<<"serial not open";
    }
}

注意:注释中,括号内的为值为本人环境下所测试的值,在使用时需要按照实际环境进行修改。

版权声明:转载请注明出处——http://blog.csdn.net/chy555chy/article

关于Qt5 QtSerialPort串口通信

最近用Qt5重写了以前用MFC做的串口通信程序,从中提取了基础的部分, 做了一个简单的程序完成了一些功能: 串口基本的收,发数据 串口是否可用判定,串口状态与按钮状态之间联系 串口发送:字符和16进制...
  • lovebird_27
  • lovebird_27
  • 2015年10月30日 19:56
  • 12227

QT串口通信(1)

最近帮老师做的项目中使用到了QT串口,然后首先百度了一下,发现网上的QT串口代码都是同一个版本。而且没有公开源代码,遂自己写了个简单的串口通信代码,并将它公布出来,一方面供有需要的人参考,另一方面记录...
  • u011939264
  • u011939264
  • 2016年07月03日 15:34
  • 1656

QT5串口通信——基础篇

这里介绍一下,用QT5实现串口通信的应用程序。 新建工程,选QWidget为基类,如下图所示。 在.pro文件,中添加QT+= serialport 编辑界面文件,如下图所示。 右击你的控件,...
  • k331922164
  • k331922164
  • 2015年05月28日 22:44
  • 11311

Qt实现串口通信总结

注意: Qt5发布之前,Qt实现串口通信一般是采用第三方类库qextserialport。Qt5发布后自带了QtSerialPort 能够支持串口通信。 1、Qextserialport类介绍  ...
  • wangzhen209
  • wangzhen209
  • 2016年09月21日 10:49
  • 4382

Linux下基于QT的串口通信程序(Tiny6410)

由于有关ARM开发板很多外设都是支持串口通信的,所以在QT下编写一个串口通信程序就显得尤为重要。下面将一步一步叙述开发过程: Linux下QT串口通信相关文件及例程下载!!! 1、开发板上设备...
  • u010535088
  • u010535088
  • 2013年05月28日 10:58
  • 5703

Linux下基于QT的串口通信程序(Tiny6410)

由于有关ARM开发板很多外设都是支持串口通信的,所以在QT下编写一个串口通信程序就显得尤为重要。下面将一步一步叙述开发过程: Linux下QT串口通信相关文件及例程下载!!! 1、开发板上设备...
  • b5w2p0
  • b5w2p0
  • 2014年08月20日 19:59
  • 2112

linux下Qt串口通信小结

由于项目需要,实现在linux下qt串口通信问题,搞了一周,算是实验通过了,记录一下。      主机:ubuntu11.04 qt版本:4.7.2         当要实现在linux下...
  • u012537168
  • u012537168
  • 2014年03月28日 15:46
  • 1499

Qt实现串口通信总结

Qt实现串口通信总结 注意: Qt5发布之前,Qt实现串口通信一般是采用第三方类库qextserialport。Qt5发布后自带了QtSerialPort 能够支持串口通信。 1、Qext...
  • x532943257
  • x532943257
  • 2017年03月15日 13:35
  • 555

QT实现串口通信(附源码下载)

1 Qextserialport类介绍      在Qt5之前的版本中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,本文章主要是讲解怎样利用此类实现串口通信。 ...
  • qq_27312943
  • qq_27312943
  • 2016年10月23日 11:45
  • 5526

Qt编写串口通信程序全程图文讲解

http://blog.csdn.net/yafeilinux/article/details/4717706
  • u013183444
  • u013183444
  • 2014年06月22日 18:59
  • 1296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt 串口通信
举报原因:
原因补充:

(最多只允许输入30个字)