Qt串口类QSerialPort使用笔记
虽然现在大多数的家用
当前的
QSerialPort类提供了操作串口的各种接口。
QSerialPortInfo是一个辅助类,可以提供计算机中可用串口的各种信息。
使用方法
先介绍QSerialPortInfo的使用。下面是一个简单的例子,用来列举出电脑上全部的串口设备。
首先,需要在pro文件中增加如下内容:
QT+=serialport
Cpp文件如下:
#include <QCoreApplication>#include <QDebug> #include <QSerialPort>#include <QSerialPortInfo> int main(int argc, char *argv[]){QCoreApplication a(argc, argv);foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){qDebug() << "Name : " << info.portName();qDebug() << "Description : " << info.description();qDebug() << "Manufacturer: " << info.manufacturer();qDebug() << "Serial Number: " << info.serialNumber();qDebug() << "System Location: " << info.systemLocation();}return a.exec();}
在我的电脑上显示的结果如下:
Name : "COM1"Description : "通信端口"Manufacturer: "(标准端口类型)"Serial Number: ""System Location: "\\.\COM1"Name : "COM5"Description : "USB Serial Port"Manufacturer: "FTDI"Serial Number: "A400G3UXA"System Location: "\\.\COM5"
通常,,我们需要指定程序使用某一个确定的串口,这时不能只使用串口名称,因为
#include <QCoreApplication>#include <QDebug>#include <QSerialPort>#include <QSerialPortInfo>int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QSerialPortInfo com_info;foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){if( info.serialNumber() == "A400G3UXA" ){com_info = info;break;}}qDebug() << "Name : " << com_info.portName();qDebug() << "Description : " << com_info.description();qDebug() << "serialNumber: " << com_info.serialNumber();return a.exec();}
QSerialPort
另外有一个重要的
每次串口收到数据后都会发出这个
下面的代码片段给出了设置串口的例子。
m_reader.setPort(info);if(m_reader.open(QIODevice::ReadWrite)){qDebug() << "m_reader.open(QIODevice::ReadWrite)";m_reader.setBaudRate(QSerialPort::Baud9600);m_reader.setParity(QSerialPort::NoParity);m_reader.setDataBits(QSerialPort::Data8);m_reader.setStopBits(QSerialPort::OneStop);m_reader.setFlowControl(QSerialPort::NoFlowControl);m_reader.clearError();m_reader.clear();connect(&m_reader, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));}void Dialog::readyReadSlot(){qDebug() << "x";QByteArray arr = m_reader.readAll();do_something(arr);}
版权声明:本文为博主原创文章,未经博主允许不得转载。
一切伟大的行动和思想,都有一个微不足道的开始