QStringList serialName;
foreach (const QSerialPortInfo& info, QSerialPortInfo::availablePorts()) {
serialName << info.portName();
}
ui->serial_comboBox->addItems(serialName);
//测试
mySerialPort->setPortName(ui->serial_comboBox->currentText()); //这个容易遗忘
mySerialPort->setBaudRate(QSerialPort::Baud4800);
mySerialPort->setDataBits(QSerialPort::Data8);//根据MCU来选择,一般是8 这个关系到串口是否成功打开
mySerialPort->setStopBits(QSerialPort::OneStop);
mySerialPort->setParity(QSerialPort::NoParity);
mySerialPort->setFlowControl(QSerialPort::NoFlowControl);
if (mySerialPort->open(QIODevice::ReadWrite))//判断是否成功打开,很重要
QMessageBox::information(this, "提示", "打开成功!");
else
QMessageBox::critical(this, "提示", "打开失败!");
mySerialPort->close();
串口接收
connect(mySerialPort, SIGNAL(readyRead()), this, SLOT(readyRead_slots())); //串口read的connect
void Widget::readyRead_slots()
{
QString buf;
buf = QString(mySerialPort->readAll());
//buf = mySerialPort->readAll().toHex(); //16进制显示
//ui->receive_plainTextEdit->appendPlainText(buf);
ui->receive_plainTextEdit->insertPlainText(buf); //没有换行
ui->receive_plainTextEdit->moveCursor(QTextCursor::End);//及时更新内容
}
串口发送
void Widget::on_send_pushButton_clicked()
{
mySerialPort->write(ui->send_textEdit->toPlainText().toLocal8Bit().data());
}
void Widget::on_clear_pushButton_clicked()
{
ui->receive_plainTextEdit->clear();
}
更改图标步骤