diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1361e68
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+build-*
+.vscode
\ No newline at end of file
diff --git a/README.md b/README.md
index e69de29..420602e 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,15 @@
+
+
+| 更新时间 | 更新内容 |
+| ---------- | ------------------------------------------------------------ |
+| 2024-09-06 | 1. 完成界面的基本绘制
2. 完成部分ui线程和工作线程的分离
|
+| | |
+| | |
+
+
+
+
+
+# TODO
+
+- [2024-09-06] 创建了两个同类型变量,将两个变量的同一个槽函数绑定在同一个信号上,如何做到区分
\ No newline at end of file
diff --git a/SerialSynTool/SerialSynTool.pro b/SerialSynTool/SerialSynTool.pro
index 0086fd6..cdac8d9 100644
--- a/SerialSynTool/SerialSynTool.pro
+++ b/SerialSynTool/SerialSynTool.pro
@@ -1,4 +1,4 @@
-QT += core gui
+QT += core gui serialport
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
@@ -17,10 +17,12 @@ DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp \
- mainwindow.cpp
+ mainwindow.cpp \
+ serialport.cpp
HEADERS += \
- mainwindow.h
+ mainwindow.h \
+ serialport.h
FORMS += \
mainwindow.ui
@@ -29,3 +31,6 @@ FORMS += \
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
+
+RESOURCES += \
+ ../_src/SRC.qrc
diff --git a/SerialSynTool/SerialSynTool.pro.user b/SerialSynTool/SerialSynTool.pro.user
index 9a13d87..6f939c9 100644
--- a/SerialSynTool/SerialSynTool.pro.user
+++ b/SerialSynTool/SerialSynTool.pro.user
@@ -1,6 +1,6 @@
-
+
EnvironmentId
@@ -58,6 +58,249 @@
ProjectExplorer.Project.Target.0
+
+ Desktop Qt 5.14.2 MinGW 64-bit
+ Desktop Qt 5.14.2 MinGW 64-bit
+ qt.qt5.5142.win64_mingw73_kit
+ 0
+ 0
+ 0
+
+ E:/Project/QT_Projects/SerialSynTool/build-SerialSynTool-Desktop_Qt_5_14_2_MinGW_64_bit-Debug
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ false
+ false
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+
+
+ E:/Project/QT_Projects/SerialSynTool/build-SerialSynTool-Desktop_Qt_5_14_2_MinGW_64_bit-Release
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+ false
+ false
+ true
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+
+
+ E:/Project/QT_Projects/SerialSynTool/build-SerialSynTool-Desktop_Qt_5_14_2_MinGW_64_bit-Profile
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ true
+ true
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+
+ 3
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+
+ dwarf
+
+ cpu-cycles
+
+
+ 250
+
+ -e
+ cpu-cycles
+ --call-graph
+ dwarf,4096
+ -F
+ 250
+
+ -F
+ true
+ 4096
+ false
+ false
+ 1000
+
+ true
+
+ false
+ false
+ false
+ false
+ true
+ 0.01
+ 10
+ true
+ kcachegrind
+ 1
+ 25
+
+ 1
+ true
+ false
+ true
+ valgrind
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+ 2
+
+ Qt4ProjectManager.Qt4RunConfiguration:E:/Project/QT_Projects/SerialSynTool/SerialSynTool/SerialSynTool.pro
+ E:/Project/QT_Projects/SerialSynTool/SerialSynTool/SerialSynTool.pro
+
+ false
+
+ false
+ true
+ true
+ false
+ false
+ true
+
+ E:/Project/QT_Projects/SerialSynTool/build-SerialSynTool-Desktop_Qt_5_14_2_MinGW_64_bit-Debug
+
+ 1
+
+
+
+ ProjectExplorer.Project.Target.1
Desktop Qt 5.14.2 MSVC2015 64bit
Desktop Qt 5.14.2 MSVC2015 64bit
@@ -282,14 +525,14 @@
2
-
- ProjectExplorer.CustomExecutableRunConfiguration
-
+ Qt4ProjectManager.Qt4RunConfiguration:E:/Project/QT_Projects/SerialSynTool/SerialSynTool/SerialSynTool.pro
+ E:/Project/QT_Projects/SerialSynTool/SerialSynTool/SerialSynTool.pro
false
false
true
+ true
false
false
true
@@ -299,38 +542,8 @@
1
-
- ProjectExplorer.Project.Target.1
-
- Desktop Qt 5.14.2 MSVC2017 32bit
- Desktop Qt 5.14.2 MSVC2017 32bit
- qt.qt5.5142.win32_msvc2017_kit
- -1
- -1
- -1
- 0
- 0
-
- 0
-
-
ProjectExplorer.Project.Target.2
-
- Desktop Qt 5.14.2 MSVC2017 64bit
- Desktop Qt 5.14.2 MSVC2017 64bit
- qt.qt5.5142.win64_msvc2017_64_kit
- -1
- -1
- -1
- 0
- 0
-
- 0
-
-
-
- ProjectExplorer.Project.Target.3
Desktop Qt 5.14.2 MinGW 32-bit
Desktop Qt 5.14.2 MinGW 32-bit
@@ -572,252 +785,9 @@
1
-
- ProjectExplorer.Project.Target.4
-
- Desktop Qt 5.14.2 MinGW 64-bit
- Desktop Qt 5.14.2 MinGW 64-bit
- qt.qt5.5142.win64_mingw73_kit
- 0
- 0
- 0
-
- E:/Project/QT_Projects/SerialSynTool/build-SerialSynTool-Desktop_Qt_5_14_2_MinGW_64_bit-Debug
-
-
- true
- QtProjectManager.QMakeBuildStep
- true
-
- false
- false
- false
-
-
- true
- Qt4ProjectManager.MakeStep
-
- false
-
-
- false
-
- 2
- Build
- Build
- ProjectExplorer.BuildSteps.Build
-
-
-
- true
- Qt4ProjectManager.MakeStep
-
- true
- clean
-
- false
-
- 1
- Clean
- Clean
- ProjectExplorer.BuildSteps.Clean
-
- 2
- false
-
- Debug
- Qt4ProjectManager.Qt4BuildConfiguration
- 2
-
-
- E:/Project/QT_Projects/SerialSynTool/build-SerialSynTool-Desktop_Qt_5_14_2_MinGW_64_bit-Release
-
-
- true
- QtProjectManager.QMakeBuildStep
- false
-
- false
- false
- true
-
-
- true
- Qt4ProjectManager.MakeStep
-
- false
-
-
- false
-
- 2
- Build
- Build
- ProjectExplorer.BuildSteps.Build
-
-
-
- true
- Qt4ProjectManager.MakeStep
-
- true
- clean
-
- false
-
- 1
- Clean
- Clean
- ProjectExplorer.BuildSteps.Clean
-
- 2
- false
-
- Release
- Qt4ProjectManager.Qt4BuildConfiguration
- 0
-
-
- E:/Project/QT_Projects/SerialSynTool/build-SerialSynTool-Desktop_Qt_5_14_2_MinGW_64_bit-Profile
-
-
- true
- QtProjectManager.QMakeBuildStep
- true
-
- false
- true
- true
-
-
- true
- Qt4ProjectManager.MakeStep
-
- false
-
-
- false
-
- 2
- Build
- Build
- ProjectExplorer.BuildSteps.Build
-
-
-
- true
- Qt4ProjectManager.MakeStep
-
- true
- clean
-
- false
-
- 1
- Clean
- Clean
- ProjectExplorer.BuildSteps.Clean
-
- 2
- false
-
- Profile
- Qt4ProjectManager.Qt4BuildConfiguration
- 0
-
- 3
-
-
- 0
- Deploy
- Deploy
- ProjectExplorer.BuildSteps.Deploy
-
- 1
- ProjectExplorer.DefaultDeployConfiguration
-
- 1
-
-
- dwarf
-
- cpu-cycles
-
-
- 250
-
- -e
- cpu-cycles
- --call-graph
- dwarf,4096
- -F
- 250
-
- -F
- true
- 4096
- false
- false
- 1000
-
- true
-
- false
- false
- false
- false
- true
- 0.01
- 10
- true
- kcachegrind
- 1
- 25
-
- 1
- true
- false
- true
- valgrind
-
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
-
- 2
-
-
- ProjectExplorer.CustomExecutableRunConfiguration
-
-
- false
-
- false
- true
- false
- false
- true
-
-
-
- 1
-
-
ProjectExplorer.Project.TargetCount
- 5
+ 3
ProjectExplorer.Project.Updater.FileVersion
diff --git a/SerialSynTool/mainwindow.cpp b/SerialSynTool/mainwindow.cpp
index 41a26bd..312ef9d 100644
--- a/SerialSynTool/mainwindow.cpp
+++ b/SerialSynTool/mainwindow.cpp
@@ -1,11 +1,17 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
+
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
+
+ serial = new SerialPort[SERIAL_NUM];
+
+ UI_Init(); // 控件初始化
+ Singel_Init(); // 槽和信号的绑定
}
MainWindow::~MainWindow()
@@ -13,3 +19,152 @@ MainWindow::~MainWindow()
delete ui;
}
+/* @brief: UI控件初始化
+ * @para: void
+ * @return: void
+ */
+void MainWindow::UI_Init(void)
+{
+ // 串口端口数据刷新
+ for (uint8_t i = 0; i < SERIAL_NUM; i++)
+ {
+ SerialPortInfoRefresh(i);
+ }
+
+ // 表格表头
+ ui->tableWidget->setColumnCount(3); // 设置3列
+ ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); // 自适应列宽
+}
+
+/* @brief: 串口端口信息刷新
+ * @para: [uint8_t] serialIdx:串口序号
+ * @return:
+ */
+void MainWindow::SerialPortInfoRefresh(uint8_t serialIdx)
+{
+ QFont font;
+
+ // 清除上一次显示
+ if (serialIdx == SERIAL_1)
+ {
+ ui->comboBox_port_1->clear();
+ }
+ else if (serialIdx == SERIAL_2)
+ {
+ ui->comboBox_port_2->clear();
+ }
+
+ foreach (const QSerialPortInfo info, QSerialPortInfo::availablePorts())
+ {
+ switch(serialIdx)
+ {
+ case SERIAL_1:
+ {
+ if (info.isNull())
+ {
+ font = ui->comboBox_port_1->font();
+ font.setStrikeOut(true);
+ }
+ else
+ {
+ font = ui->comboBox_port_1->font();
+ font.setStrikeOut(false);
+ }
+ ui->comboBox_port_1->setFont(font);
+ ui->comboBox_port_1->addItem(info.portName() + "-" + info.description());
+ }break;
+ case SERIAL_2:
+ {
+ if (info.isNull())
+ {
+ font = ui->comboBox_port_2->font();
+ font.setStrikeOut(true);
+ }
+ else
+ {
+ font = ui->comboBox_port_2->font();
+ font.setStrikeOut(false);
+ }
+ ui->comboBox_port_2->setFont(font);
+ ui->comboBox_port_2->addItem(info.portName() + "-" + info.description());
+ }break;
+ default:
+ {
+ }break;
+ }
+ }
+}
+
+//==========================================================================<槽函数>
+/* @brief: 槽与信号的绑定
+ * @para:
+ * @return:
+ */
+void MainWindow::Singel_Init(void)
+{
+ connect(ui->pushButton_start_1, &QPushButton::clicked, this, PushButton_start_clicked_Callback); // 开始按键点击事件绑定
+ connect(ui->pushButton_start_2, &QPushButton::clicked, this, PushButton_start_clicked_Callback); // 开始按键点击事件绑定
+ connect(ui->pushButton_stop_1, &QPushButton::clicked, this, PushButton_stop_clicked_Callback); // 结束按键点击事件绑定
+ connect(ui->pushButton_stop_2, &QPushButton::clicked, this, PushButton_stop_clicked_Callback); // 结束按键点击事件绑定
+
+ connect(ui->pushButton_refresh_1, &QPushButton::clicked, this, PushButton_refresh_clicked_Callback); // 刷新按键点击事件绑定
+ connect(ui->pushButton_refresh_2, &QPushButton::clicked, this, PushButton_refresh_clicked_Callback); // 刷新按键点击事件绑定
+
+ connect(this, &MainWindow::Signal_Serial_Open, &serial[SERIAL_1], &SerialPort::SerialPort_OpenSerial_Callback);
+ connect(this, &MainWindow::Signal_Serial_Open, &serial[SERIAL_2], &SerialPort::SerialPort_OpenSerial_Callback);
+}
+
+/* @brief: 开启串口按键点击事件槽函数
+ * @para:
+ * @return:
+ */
+void MainWindow::PushButton_start_clicked_Callback(void)
+{
+ QPushButton* btn = qobject_cast(sender());
+ qDebug() << "<<<-----" << btn->objectName() << "Clicked ----->>>";
+
+ SERIAL_INFO info = {0};
+ if (btn == ui->pushButton_start_1)
+ {
+ info.portName = ui->comboBox_port_1->currentText().split('-').at(0); // 获取端口号
+ info.bandrate = ui->comboBox_band_1->currentText().toUInt(nullptr, 10);
+ info.timeOutCnt = ui->lineEdit_timeout_1->text().toUInt(nullptr, 10);
+ }
+ else if (btn == ui->pushButton_start_2)
+ {
+ info.portName = ui->comboBox_port_2->currentText().split('-').at(0);
+ info.bandrate = ui->comboBox_band_2->currentText().toInt(nullptr, 10);
+ info.timeOutCnt = ui->lineEdit_timeout_2->text().toUInt(nullptr, 10);
+ }
+
+ qDebug() << info.portName << info.bandrate << info.timeOutCnt;
+ emit Signal_Serial_Open(&info); // 发送信号
+}
+
+/* @brief: 关闭串口按键点击事件槽函数
+ * @para:
+ * @return:
+ */
+void MainWindow::PushButton_stop_clicked_Callback(void)
+{
+ QPushButton* btn = qobject_cast(sender());
+ qDebug() << "<<<-----" << btn->objectName() << "Clicked ----->>>";
+}
+
+/* @brief: 刷新键点击事件槽函数
+ * @para:
+ * @return:
+ */
+void MainWindow::PushButton_refresh_clicked_Callback(void)
+{
+ QPushButton* btn = qobject_cast(sender());
+ qDebug() << "<<<-----" << btn->objectName() << "Clicked ----->>>";
+ if (btn == ui->pushButton_refresh_1)
+ {
+ SerialPortInfoRefresh(1);
+ }
+ else if (btn == ui->pushButton_refresh_2)
+ {
+ SerialPortInfoRefresh(2);
+ }
+}
diff --git a/SerialSynTool/mainwindow.h b/SerialSynTool/mainwindow.h
index 4643e32..fe2f8e0 100644
--- a/SerialSynTool/mainwindow.h
+++ b/SerialSynTool/mainwindow.h
@@ -2,6 +2,10 @@
#define MAINWINDOW_H
#include
+#include
+#include
+
+#include "serialport.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
@@ -15,7 +19,22 @@ public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
+ void UI_Init(void); // 控件初始化
+ void Singel_Init(void); // 槽初始化
+
+ void SerialPortInfoRefresh(uint8_t serialIdx); // 串口信息数据刷新
+
+private slots: // 槽函数
+ void PushButton_start_clicked_Callback(void); // 开始按键点击事件绑定
+ void PushButton_stop_clicked_Callback(void); // 结束按键点击事件绑定
+ void PushButton_refresh_clicked_Callback(void); // 刷新按键点击事件绑定
+
+signals: // 信号
+ void Signal_Serial_Open(SERIAL_INFO* info); // 开启串口信号
+ void Signal_Serial_Close(void); // 关闭串口信号
+
private:
Ui::MainWindow *ui;
+ SerialPort *serial;
};
#endif // MAINWINDOW_H
diff --git a/SerialSynTool/mainwindow.ui b/SerialSynTool/mainwindow.ui
index b232854..20d9af8 100644
--- a/SerialSynTool/mainwindow.ui
+++ b/SerialSynTool/mainwindow.ui
@@ -6,17 +6,619 @@
0
0
- 800
- 600
+ 1393
+ 920
MainWindow
-
-
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Maximum
+
+
+
+ 10
+ 20
+
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 230
+
+
+
+ 配置
+
+
+
-
+
+
-
+
+
+ 10
+
+
-
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 超时时间(ms)
+
+
+
+ -
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 帧颜色
+
+
+
+ -
+
+
+
+ 0
+ 25
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ #FF0000
+
+
+
+ -
+
+
+
+ 0
+ 25
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+
+ -
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 端口
+
+
+
+ -
+
+
+
+ 0
+ 25
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 20
+
+
+
+ -
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 波特率
+
+
+
+ -
+
+
+
+ 0
+ 25
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 2400
+
+
-
+
+ 2400
+
+
+ -
+
+ 4800
+
+
+ -
+
+ 9600
+
+
+ -
+
+ 115200
+
+
+
+
+ -
+
+
+
+ 20
+ 20
+
+
+
+
+ 20
+ 20
+
+
+
+ image: url(:/img/img/refresh.png);
+
+
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Minimum
+
+
+
+ 10
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 开始
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Minimum
+
+
+
+ 10
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 暂停
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Minimum
+
+
+
+ 10
+ 20
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 318
+ 20
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
-
+
+
+ 10
+
+
-
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 超时时间(ms)
+
+
+
+ -
+
+
+
+ 0
+ 25
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 20
+
+
+
+ -
+
+
+
+ 0
+ 25
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+
+ -
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 波特率
+
+
+
+ -
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 端口
+
+
+
+ -
+
+
+
+ 0
+ 25
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 2400
+
+
-
+
+ 2400
+
+
+ -
+
+ 4800
+
+
+ -
+
+ 9600
+
+
+ -
+
+ 115200
+
+
+
+
+ -
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 帧颜色
+
+
+
+ -
+
+
+
+ 0
+ 25
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ #0000FF
+
+
+
+ -
+
+
+
+ 20
+ 20
+
+
+
+
+ 20
+ 20
+
+
+
+ image: url(:/img/img/refresh.png);
+
+
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Minimum
+
+
+
+ 10
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 开始
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Minimum
+
+
+
+ 10
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+ font: 12pt "Adobe Arabic";
+
+
+ 暂停
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Minimum
+
+
+
+ 10
+ 20
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 318
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ false
+
+
+
+ 时间戳
+
+
+
+
+ 数据
+
+
+
+
+ 解析
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Maximum
+
+
+
+ 10
+ 20
+
+
+
+
+
+
+
-
+
+
+
diff --git a/SerialSynTool/serialport.cpp b/SerialSynTool/serialport.cpp
new file mode 100644
index 0000000..650747a
--- /dev/null
+++ b/SerialSynTool/serialport.cpp
@@ -0,0 +1,46 @@
+#include "serialport.h"
+
+/* @brief: 构造函数
+ * @para:
+ * @return:
+ */
+SerialPort::SerialPort(QObject *parent) : QObject(parent)
+{
+ thread = new QThread(); // 创建线程句柄
+ serial = new QSerialPort(); // 创建串口句柄
+}
+
+/* @brief: 析构函数
+ * @para:
+ * @return:
+ */
+SerialPort::~SerialPort()
+{
+
+}
+
+//==========================================================================<槽函数>
+/* @brief: ui线程发送的打开串口的信号回调函数
+ * @para:
+ * @return:
+ */
+void SerialPort::SerialPort_OpenSerial_Callback(SERIAL_INFO* info)
+{
+ qDebug() << "<<<-----Serial Opened Succssfully ----->>>";
+ serial->setPortName(info->portName);
+ serial->setBaudRate(info->bandrate);
+ serial->setDataBits(QSerialPort::Data8);
+ serial->setStopBits(QSerialPort::OneStop); // 以为停止位
+ serial->setParity(QSerialPort::NoParity); // 无奇偶校验
+ serial->setFlowControl(QSerialPort::NoFlowControl); // 硬件控制
+
+ if(serial->open(QIODevice::ReadWrite))
+ {
+ serial->moveToThread(thread); // 加入线程
+ qDebug() << "<<<----- 串口打开成功,线程ID:" << serial->thread() << " ----->>>";; // 获取线程id
+ }
+ else
+ {
+ qDebug() << "串口打开失败";
+ }
+}
diff --git a/SerialSynTool/serialport.h b/SerialSynTool/serialport.h
new file mode 100644
index 0000000..14fcb32
--- /dev/null
+++ b/SerialSynTool/serialport.h
@@ -0,0 +1,45 @@
+#ifndef SERIALPORT_H
+#define SERIALPORT_H
+
+#include
+#include
+
+#include
+#include
+#include
+
+//==========================================================================
+typedef enum
+{
+ SERIAL_1,
+ SERIAL_2,
+ SERIAL_NUM,
+}SERIAL_IDX; // 串口编号
+
+typedef struct
+{
+ QString portName; // 端口号
+ uint32_t bandrate; // 波特率
+ uint32_t timeOutCnt; // 超时时间
+}SERIAL_INFO; // 串口信息
+
+
+
+class SerialPort : public QObject
+{
+ Q_OBJECT
+public:
+ explicit SerialPort(QObject *parent = nullptr);
+ ~SerialPort();
+
+signals:
+
+public slots: // 槽函数
+ void SerialPort_OpenSerial_Callback(SERIAL_INFO* info);
+
+private:
+ QThread* thread;
+ QSerialPort* serial;
+};
+
+#endif // SERIALPORT_H
diff --git a/_src/SRC.qrc b/_src/SRC.qrc
new file mode 100644
index 0000000..a1f1b29
--- /dev/null
+++ b/_src/SRC.qrc
@@ -0,0 +1,5 @@
+
+
+ img/refresh.png
+
+
diff --git a/_src/img/refresh.png b/_src/img/refresh.png
new file mode 100644
index 0000000..5c139ef
Binary files /dev/null and b/_src/img/refresh.png differ