From 0a8435bb638ef8f8276becf91ac0cbad4148ad9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8D=E6=98=8E=E6=B4=8B?= Date: Wed, 17 Jan 2018 15:35:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=97=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mainwindow.cpp | 10 ++++++++-- mainwindow.h | 10 ++++++---- serialcontroller.cpp | 12 ++++++++---- serialcontroller.h | 2 ++ 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 3e5c3ce..ec6f943 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -28,10 +28,10 @@ MainWindow::MainWindow(QWidget *parent) ParityLabel = new QLabel(tr("校验位")); //发送与接受区域 - RecvArea = new QPlainTextEdit(); + RecvArea = new QTextEdit(); RecvArea->setReadOnly(true); //RecvArea->setText(tr("Hello")); - SendArea = new QPlainTextEdit(); + SendArea = new QTextEdit(); //按钮 OpenButton = new QPushButton(tr("打开串口")); @@ -86,6 +86,7 @@ MainWindow::MainWindow(QWidget *parent) connect(ParityBox, QComboBox::currentTextChanged, serialController, SerialController::getParity); connect(this, sendData, serialController, SerialController::writeData); connect(SendButton, QPushButton::clicked, this, SendContent); + connect(serialController, SerialController::recvData, this, getRecv); } void MainWindow::CheckSerials() @@ -142,6 +143,11 @@ void MainWindow::serialClosed() connect(OpenButton, QPushButton::clicked, this, OpenSerial); } +void MainWindow::getRecv(QByteArray recv) +{ + RecvArea->setText(RecvArea->toPlainText()+QString(recv)); +} + void MainWindow::OpenSerial() { QString portName = COMBox->currentText().split(' ')[0]; diff --git a/mainwindow.h b/mainwindow.h index b2fe5a5..db911e2 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -34,16 +35,17 @@ class MainWindow : public QWidget void sendData(QString content); public slots: - void serialOpened(); - void serialNotOpened(); - void serialClosed(); + void serialOpened(); //串口打开成功 + void serialNotOpened(); //串口打开失败 + void serialClosed(); //串口关闭 + void getRecv(QByteArray recv); //串口接受数据 private: QComboBox *COMBox, *BaudrateBox, *StopbitsBox, *DatabitsBox, *ParityBox; QStringList COMList, BaudrateList, StopbitsList, DatabitsList, ParityList; QLabel *BaudrateLabel, *StopbitsLabel, *DatabitsLabel, *ParityLabel; QGridLayout *layout; - QPlainTextEdit *RecvArea, *SendArea; + QTextEdit *RecvArea, *SendArea; QPushButton *OpenButton, *SendButton; QTimer *CheckTimer; SerialController *serialController; diff --git a/serialcontroller.cpp b/serialcontroller.cpp index c961bb1..0c4feed 100644 --- a/serialcontroller.cpp +++ b/serialcontroller.cpp @@ -3,6 +3,7 @@ SerialController::SerialController(QObject *parent) : QObject(parent) { serial = new QSerialPort(this); + connect(serial, QSerialPort::readyRead, this, handleRecv); } void SerialController::openSerial(QString name) @@ -71,13 +72,16 @@ void SerialController::writeData(QString content) { if(serial->isWritable()) { - qDebug()<<"Writing content: "<< content; - QByteArray data = content.toUtf8(); - qDebug()<<"Byte: "<write(data); + qint64 result = serial->write(content.toLatin1().data()); if(result == -1) emit writeFailed(); else emit writeSuccess(result); } } + +void SerialController::handleRecv() +{ + QByteArray data = serial->readAll(); + emit recvData(data); +} diff --git a/serialcontroller.h b/serialcontroller.h index 911534b..7cc53e4 100644 --- a/serialcontroller.h +++ b/serialcontroller.h @@ -17,6 +17,7 @@ class SerialController : public QObject void closeSuccess(); //串口关闭成功 void writeSuccess(int len); //串口发送成功 len为成功发送的字节 void writeFailed(); //串口发送失败 + void recvData(QByteArray content); //发送接收到的数据 public slots: void openSerial(QString name); @@ -26,6 +27,7 @@ public slots: void getDatabits(QString databits); //改变数据为 void getParity(QString parity); //改变校验位 void writeData(QString content); //发送数据 + void handleRecv(); //接受数据 private: QSerialPort *serial;