#include "serial.h"
#include "ui_serial.h"
serial::serial(QWidget *parent) :
QWidget(parent),
ui(new Ui::serial)
{
ui->setupUi(this);
ui->textEdit->append(tr("检测到端口列表:"));
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
QSerialPort serial;
serial.setPort(info);
if (serial.open(QIODevice::ReadWrite))
{
ui->comboBox->addItem(info.portName());
ui->textEdit->append(info.portName());
ui->textEdit->append(info.description());
ui->textEdit->append(info.manufacturer());
serial.close();
}
}
ui->comboBox_2->setCurrentIndex(3);//默认9600
ui->pushButton->setText(tr("打开串口"));
ui->pushButton_2->setEnabled(false);
}
serial::~serial()
{
delete ui;
}
void serial::my_readuart()
{
QByteArray requestData;
requestData = my_serialport->readAll();
if(requestData!= NULL)
{
ui->textEdit->append(tr(requestData));
}
requestData.clear();
}
void serial::on_pushButton_clicked()
{
if(ui->pushButton->text()==tr("打开串口")){
my_serialport= new QSerialPort();
my_serialport->setPortName(ui->comboBox->currentText());
my_serialport->open(QIODevice::ReadWrite);
my_serialport->setBaudRate(ui->comboBox_2->currentText().toInt());
switch(ui->comboBox_3->currentIndex()){
case 0: my_serialport->setParity(QSerialPort::NoParity);break;
case 1: my_serialport->setParity(QSerialPort::OddParity);break;
case 2: my_serialport->setParity(QSerialPort::EvenParity);break;
default: break;
}
switch(ui->comboBox_4->currentIndex()){
case 0: my_serialport->setDataBits(QSerialPort::Data8);break;
case 1: my_serialport->setDataBits(QSerialPort::Data7);break;
case 2: my_serialport->setDataBits(QSerialPort::Data6);break;
default: break;
}
switch(ui->comboBox_5->currentIndex()){
case 0: my_serialport->setStopBits(QSerialPort::OneStop);break;
case 1: my_serialport->setStopBits(QSerialPort::TwoStop);break;
default: break;
}
my_serialport->setFlowControl(QSerialPort::NoFlowControl);
connect(my_serialport,SIGNAL(readyRead()),this,SLOT(my_readuart()));
ui->comboBox->setEnabled(false);
ui->comboBox_2->setEnabled(false);
ui->comboBox_3->setEnabled(false);
ui->comboBox_4->setEnabled(false);
ui->comboBox_5->setEnabled(false);
ui->label_6->setStyleSheet("background-color:red");
ui->pushButton->setText(tr("关闭串口"));
ui->pushButton_2->setEnabled(true);
}
else {
my_serialport->clear();
my_serialport->deleteLater();
// my_serialport->deleteLater();
ui->comboBox->setEnabled(true);
ui->comboBox_2->setEnabled(true);
ui->comboBox_3->setEnabled(true);
ui->comboBox_4->setEnabled(true);
ui->comboBox_5->setEnabled(true);
// ui->label_6->setStyleSheet("background-color:none");
ui->label_6->setStyleSheet("background-color:rgb(130,130,130)");
ui->pushButton->setText(tr("打开串口"));
ui->pushButton_2->setEnabled(false);
}
}
void serial::on_pushButton_2_clicked()
{
my_serialport->write(ui->lineEdit->text().toLatin1());
}
- 1
- 2
- 3
- 4
- 5
- 6
前往页