QT5开发笔记(六)--串口通信
修改.pro工程文件,添加串口支持
QT += serialport
#include <QSerialPort>
QSerialPort *serial;
serial = new QSerialPort();
connect(serial, SIGNAL(readyRead()),this,SLOT(serial_received_data()));
打开/关闭串口
void MainWindow::on_SerialButton_clicked()
{
if(serial->isOpen())
{
serial->close();
ui->textBrowser->append("关闭" + serial->portName());
ui->SerialButton->setText("打开串口");
}
else
{
serial->setPortName(ui->comboBox->currentText()); // 设置端口
serial->setBaudRate(QSerialPort::Baud115200); // 设置波特率
serial->setDataBits(QSerialPort::Data8); // 8位数据位
serial->setFlowControl(QSerialPort::NoFlowControl); // 无流控制
serial->setParity(QSerialPort::NoParity); // 无校验位
serial->setStopBits(QSerialPort::OneStop); // 1位停止位
if(serial->open(QIODevice::ReadWrite))
{
ui->textBrowser->append("打开" + serial->portName() + "成功");
ui->SerialButton->setText("关闭串口");
}
else
{
ui->textBrowser->append("打开" + serial->portName() + "失败");
}
}
}
发送数据:
if(serial->isOpen())
{
serial->write("Hello World\r\n", 12);
}
接收数据:
void MainWindow::serial_received_data()
{
QByteArray bytes;
bytes = serial->read(100);
ui->textBrowser->append(bytes);
}
查找可用串口列表:
#include <QSerialPortInfo>
foreach (QSerialPortInfo info, QSerialPortInfo::availablePorts())
{
ui->comboBox->addItem(info.portName());
}