|
5Qter豆
#include "ort.h"
Port:ort(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pushButton_SearchPort, SIGNAL(clicked()), this, SLOT(SearPort()));
connect(ui.pushButton_OpenPort, SIGNAL(readyRead()), this, SLOT(PortOpen()));//这里‘’打开串口‘’的按钮,点击它跳不到PortOpen()里;
connect(ui.pushButton_CleaReceiveDate, SIGNAL(clicked()), this, SLOT(Set_ClearReceiveDate()));
connect(ui.pushButton_ClearSendDate, SIGNAL(clicked()), this, SLOT(Set_ClearSendDate()));
isOpenSearPort = false;
}
void Port::Set_ClearReceiveDate()
{
ui.ReceiveTextEdit->clear();
}
void Port::Set_ClearSendDate()
{
ui.SendTextEdit->clear();
}
void Port::SearPort()
{
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
ui.ReceiveTextEdit->setText(tr("sear port succeed"));
qDebug() << "Name : " << info.portName();
qDebug() << "Description : " << info.description();
qDebug() << "Manufacturer: " << info.manufacturer();
qDebug() << "Serial Number: " << info.serialNumber();
qDebug() << "System Location: " << info.systemLocation();
ui.comboBox_PortName->addItem(info.portName());
isOpenSearPort = true;
}
}
void Port:ortOpen()
{
if (isOpenSearPort == true)
{
if (ui.pushButton_OpenPort->text() == "打开串口")
{
bool com = My_SerialPort->open(QIODevice::ReadWrite);//打开串口并选择读写模式
if (com)
{
timer->start(100);
ui.statusBar->showMessage("串口打开成功", 3000);
ui.pushButton_OpenPort->setText("关闭串口");
}
else
{
qDebug() << "串口打开失败";
this->setStatusTip("串口打开失败");
ui.statusBar->showMessage("串口打开失败", 3000);
}
}
else
{
timer->stop();
My_SerialPort->close();
ui.pushButton_OpenPort->setText("打开串口");
ui.statusBar->showMessage("serial port is closed", 3000);
}
}
else
{
ui.ReceiveTextEdit->setText(tr("请点击搜索串口"));
}
}
void Port::Set_SendDate()
{
if (!ui.SendTextEdit->toPlainText().isEmpty())
{
isHexSend = ui.checkBox_Send->isChecked();
QString sendstr = ui.SendTextEdit->toPlainText();
QByteArray sdata;
if (isHexSend)
{
sdata.append(sendstr).toHex();
}
else
{
sdata.append(sendstr);
}
My_SerialPort->write(sdata, sdata.length());
ui.statusBar->showMessage("send success", 3000);
}
}
void Port::Set_PortName()
{
QString Port = ui.comboBox_PortName->currentText();
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
if (info.portName() == Port)
{
My_SerialPort->setPortName(info.systemLocation());
}
}
My_SerialPort->setFlowControl(QSerialPort::NoFlowControl);
}
void Port::Set_BaudRate()
{
//设置波特率
qint32 BaudRate = ui.comboBox_BaudRate->currentIndex();
switch (BaudRate)
{
case 9600: My_SerialPort->setBaudRate(QSerialPort::Baud9600, QSerialPort::AllDirections); break;
case 115200: My_SerialPort->setBaudRate(QSerialPort::Baud115200, QSerialPort::AllDirections); break;
default: My_SerialPort->setBaudRate(QSerialPort::UnknownBaud, QSerialPort::AllDirections);break;
}
}
void Port::Set_DateBits()
{
//设置数据位
qint32 databits_index = ui.comboBox_DateBits->currentIndex();
switch (databits_index) {
case 5:
My_SerialPort->setDataBits(QSerialPort:ata5);
break;
case 6:
My_SerialPort->setDataBits(QSerialPort:ata6);
break;
case 7:
My_SerialPort->setDataBits(QSerialPort:ata7);
break;
case 8:
My_SerialPort->setDataBits(QSerialPort:ata8);
break;
default:
My_SerialPort->setDataBits(QSerialPort::UnknownDataBits);
break;
}
}
void Port::Set_Parity()
{
//设置奇偶校验
qint32 parity = ui.comboBox_Parity->currentIndex();
switch (parity)
{
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:
My_SerialPort->setParity(QSerialPort::UnknownParity);
break;
}
}
void Port::Set_StopBits()
{
//设置停止位
qint32 stopbit_index = ui.comboBox_StopBits->currentIndex();
switch (stopbit_index) {
case 1:
My_SerialPort->setStopBits(QSerialPort::OneStop);
break;
case 2:
My_SerialPort->setStopBits(QSerialPort::TwoStop);
break;
default:
My_SerialPort->setStopBits(QSerialPort::UnknownStopBits);
break;
}
}
|
|