接受功能
This commit is contained in:
+8
-2
@@ -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];
|
||||
|
||||
+6
-4
@@ -4,6 +4,7 @@
|
||||
#include <QWidget>
|
||||
#include <QComboBox>
|
||||
#include <QGridLayout>
|
||||
#include <QTextEdit>
|
||||
#include <QPlainTextEdit>
|
||||
#include <QPushButton>
|
||||
#include <QTimer>
|
||||
@@ -34,16 +35,17 @@ signals:
|
||||
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;
|
||||
|
||||
@@ -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: "<<data.toHex();
|
||||
qint64 result = serial->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);
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ signals:
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user