//获取串口信息列表
QList<QSerialPortInfo> serialPortInfo=QSerialPortInfo::availablePorts();
int count=serialPortInfo.count();
for(int i=0;i<count;i++)
{
ui->cboxSerialPort->addItem(serialPortInfo.at(i).portName());
}
bool MainWindow::getSerialPortConfig()
{
//获取串口配置
mPortName=ui->cboxSerialPort->currentText();
mBaudRate=ui->cboxBaudRate->currentText();
mParity=ui->cBoxParity->currentText();
mDataBits=ui->cboxDataBits->currentText();
mStopBits=ui->cboxStopBits->currentText();
//配置串口
//波特率
mSerialPort.setPortName(mPortName);
if("9600"==mBaudRate)
{
mSerialPort.setBaudRate(QSerialPort::Baud9600);
}
else if("115200"==mBaudRate)
{
mSerialPort.setBaudRate(QSerialPort::Baud115200);
}
else if("4800"==mBaudRate)
{
mSerialPort.setBaudRate(QSerialPort::Baud4800);
}
//校验位
if("None"==mParity)
{
mSerialPort.setParity(QSerialPort::NoParity);
}
else if("Mark"==mParity)
{
mSerialPort.setParity(QSerialPort::MarkParity);
}
else if("Even"==mParity)
{
mSerialPort.setParity(QSerialPort::EvenParity);
}
else if("Odd"==mParity)
{
mSerialPort.setParity(QSerialPort::OddParity);
}
//数据位
if("5"==mDataBits)
{
mSerialPort.setDataBits(QSerialPort::Data5);
}
else if("6"==mDataBits)
{
mSerialPort.setDataBits(QSerialPort::Data6);
}
else if("7"==mDataBits)
{
mSerialPort.setDataBits(QSerialPort::Data7);
}
else if("8"==mDataBits)
{
mSerialPort.setDataBits(QSerialPort::Data8);
}
//停止位
if("1"==mStopBits)
{
mSerialPort.setStopBits(QSerialPort::OneStop);
}
else if("1.5"==mStopBits)
{
mSerialPort.setStopBits(QSerialPort::OneAndHalfStop);
}
else
{
mSerialPort.setStopBits(QSerialPort::TwoStop);
}
return mSerialPort.open(QSerialPort::ReadWrite);
}
//发送数据
void MainWindow::on_btnSend_clicked()
{
if(mIsOpen)
{
mSerialPort.write(ui->textEditSend->toPlainText().toStdString().c_str());
}
}
//串口接收
void MainWindow::on_SerialPort_readyRead()
{
if(mIsOpen)
{
QByteArray recvData=mSerialPort.readAll();
ui->textEditReceive->append(QString(recvData));
}
}
网友评论