完成发送数据
修复了数据位的bug
This commit is contained in:
+12
-5
@@ -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("打开串口"));
|
||||
@@ -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()
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
+4
-2
@@ -4,7 +4,7 @@
|
||||
#include <QWidget>
|
||||
#include <QComboBox>
|
||||
#include <QGridLayout>
|
||||
#include <QTextEdit>
|
||||
#include <QPlainTextEdit>
|
||||
#include <QPushButton>
|
||||
#include <QTimer>
|
||||
#include <QSerialPortInfo>
|
||||
@@ -31,6 +31,7 @@ signals:
|
||||
void setStopBits(QString stopbits);
|
||||
void setDataBits(QString databits);
|
||||
void setParity(QString parity);
|
||||
void sendData(QString content);
|
||||
|
||||
public slots:
|
||||
void serialOpened();
|
||||
@@ -42,7 +43,7 @@ private:
|
||||
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;
|
||||
@@ -50,6 +51,7 @@ private:
|
||||
|
||||
void OpenSerial();
|
||||
void CloseSerial();
|
||||
void SendContent();
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
|
||||
+16
-2
@@ -11,8 +11,7 @@ void SerialController::openSerial(QString name)
|
||||
if(serial->open(QIODevice::ReadWrite))
|
||||
{
|
||||
//串口打开成功
|
||||
serial->waitForBytesWritten();
|
||||
serial->waitForReadyRead();
|
||||
serial->setDataTerminalReady(false);
|
||||
emit openSuccess();
|
||||
}
|
||||
else
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+10
-7
@@ -12,17 +12,20 @@ public:
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user