Skip to content

Commit

Permalink
完成发送数据
Browse files Browse the repository at this point in the history
修复了数据位的bug
  • Loading branch information
才明洋 committed Jan 17, 2018
1 parent 094f3e6 commit 70810f5
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 16 deletions.
17 changes: 12 additions & 5 deletions mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ MainWindow::MainWindow(QWidget *parent)
ParityLabel = new QLabel(tr("校验位"));

//发送与接受区域
RecvArea = new QTextEdit();
RecvArea = new QPlainTextEdit();
RecvArea->setReadOnly(true);
RecvArea->setText(tr("Hello"));
SendArea = new QTextEdit();
//RecvArea->setText(tr("Hello"));
SendArea = new QPlainTextEdit();

//按钮
OpenButton = new QPushButton(tr("打开串口"));
Expand Down Expand Up @@ -84,6 +84,8 @@ MainWindow::MainWindow(QWidget *parent)
connect(StopbitsBox, QComboBox::currentTextChanged, serialController, SerialController::getStopbits);
connect(DatabitsBox, QComboBox::currentTextChanged, serialController, SerialController::getDatabits);
connect(ParityBox, QComboBox::currentTextChanged, serialController, SerialController::getParity);
connect(this, sendData, serialController, SerialController::writeData);
connect(SendButton, QPushButton::clicked, this, SendContent);
}

void MainWindow::CheckSerials()
Expand Down Expand Up @@ -147,12 +149,17 @@ void MainWindow::OpenSerial()
emit requestOpen(portName);
emit setBaudRate(BaudrateBox->currentText());
emit setStopBits(StopbitsBox->currentText());
emit setDataBits(StopbitsBox->currentText());
emit setDataBits(DatabitsBox->currentText());
emit setParity(ParityBox->currentText());

}

void MainWindow::CloseSerial()
{
emit requestClose();
}

void MainWindow::SendContent()
{
QString content = SendArea->toPlainText();
emit sendData(content);
}
6 changes: 4 additions & 2 deletions mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <QWidget>
#include <QComboBox>
#include <QGridLayout>
#include <QTextEdit>
#include <QPlainTextEdit>
#include <QPushButton>
#include <QTimer>
#include <QSerialPortInfo>
Expand All @@ -31,6 +31,7 @@ class MainWindow : public QWidget
void setStopBits(QString stopbits);
void setDataBits(QString databits);
void setParity(QString parity);
void sendData(QString content);

public slots:
void serialOpened();
Expand All @@ -42,14 +43,15 @@ public slots:
QStringList COMList, BaudrateList, StopbitsList, DatabitsList, ParityList;
QLabel *BaudrateLabel, *StopbitsLabel, *DatabitsLabel, *ParityLabel;
QGridLayout *layout;
QTextEdit *RecvArea, *SendArea;
QPlainTextEdit *RecvArea, *SendArea;
QPushButton *OpenButton, *SendButton;
QTimer *CheckTimer;
SerialController *serialController;
QThread SerialThr;

void OpenSerial();
void CloseSerial();
void SendContent();
};

#endif // MAINWINDOW_H
18 changes: 16 additions & 2 deletions serialcontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ void SerialController::openSerial(QString name)
if(serial->open(QIODevice::ReadWrite))
{
//串口打开成功
serial->waitForBytesWritten();
serial->waitForReadyRead();
serial->setDataTerminalReady(false);
emit openSuccess();
}
else
Expand Down Expand Up @@ -67,3 +66,18 @@ void SerialController::getParity(QString parity)
serial->setParity(QSerialPort::EvenParity);
qDebug()<<"The parity now is "<<parity;
}

void SerialController::writeData(QString content)
{
if(serial->isWritable())
{
qDebug()<<"Writing content: "<< content;
QByteArray data = content.toUtf8();
qDebug()<<"Byte: "<<data.toHex();
qint64 result = serial->write(data);
if(result == -1)
emit writeFailed();
else
emit writeSuccess(result);
}
}
17 changes: 10 additions & 7 deletions serialcontroller.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,20 @@ class SerialController : public QObject
explicit SerialController(QObject *parent = nullptr);

signals:
void openSuccess();
void openFailed();
void closeSuccess();
void openSuccess(); //串口打开成功
void openFailed(); //串口打开失败
void closeSuccess(); //串口关闭成功
void writeSuccess(int len); //串口发送成功 len为成功发送的字节
void writeFailed(); //串口发送失败

public slots:
void openSerial(QString name);
void closeSerial();
void getBaudrate(QString baudrate);
void getStopbits(QString stopbits);
void getDatabits(QString databits);
void getParity(QString parity);
void getBaudrate(QString baudrate); //改变波特率
void getStopbits(QString stopbits); //改变停止位
void getDatabits(QString databits); //改变数据为
void getParity(QString parity); //改变校验位
void writeData(QString content); //发送数据

private:
QSerialPort *serial;
Expand Down

0 comments on commit 70810f5

Please sign in to comment.