添加串口库
QT += core gui serialport
添加必要头文件
#include <QSerialPort> //提供访问串口的功能
#include <QSerialPortInfo> //提供系统中存在的串口的信息
初始化串口对象
//创建串口对象
QSerialPort serial;
//设置串口名 Windows
//serial.setPortName("COM3");
//设置串口名 linux
serial.setPortName("/dev/ttyUSB0");
//设置波特率
serial.setBaudRate(QSerialPort::Baud9600);
//设置数据位数
serial.setDataBits(QSerialPort::Data8);
//设置奇偶校验
serial.setParity(QSerialPort::NoParity);
//设置停止位
serial.setStopBits(QSerialPort::OneStop);
//设置流控制
serial.setFlowControl(QSerialPort::NoFlowControl);
//打开串口
serial.open(QIODevice::ReadWrite);
串口发送
QByteArray sendBuf="ATI\r\n";
serial.write(sendBuf);
串口接受 可以使用槽函数来做,这样避免去轮询
//连接信号和槽
QObject::connect(&serial, &QSerialPort::readyRead, this, &MainWindow::serialPort_readyRead);
//声明槽函数
public slots:
void serialPort_readyRead();
//编写的槽函数
void MainWindow::serialPort_readyRead()
{
//从接收缓冲区中读取数据
QByteArray buffer = serial.readAll();
qDebug () << "read :" + buffer;
serial.close();
}
如果出现串口打开失败,那就是linux下串口权限不够
QIODevice::write (QSerialPort): device not open
修改权限解决
sudo chmod 666 /dev/ttyUSB0
获取所有当前可用的串口的名字
QStringList m_serialPortName;
foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
{
m_serialPortName << info.portName();
qDebug()<<"serialPortName:"<<info.portName();
}