Skip to content

Commit e7eb79e

Browse files
feat(mainwindow): 优化串口数据接收处理
- 增加 bufferReceived 缓冲区,用于存储接收到的数据 -采用循环处理,直到找到所有完整的数据行 - 修复了原代码中未处理不完整数据行的问题 - 优化了数据日志的更新逻辑
1 parent 783a8fb commit e7eb79e

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

mainwindow.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -450,9 +450,14 @@ void MainWindow::updateConnectState(const bool connected) const {
450450
}
451451

452452
void MainWindow::onReceivedData() {
453-
const QByteArray bytes = serialPort.readAll();
454-
if (bytes != nullptr) {
455-
updateComMessageLog(bytes, "");
453+
bufferReceived += serialPort.readAll();
454+
while (true) {
455+
int endIndex = bufferReceived.indexOf('\n');
456+
if (endIndex == -1)
457+
break;
458+
459+
updateComMessageLog(bufferReceived, "");
460+
bufferReceived.remove(0, endIndex + 1);
456461
}
457462
}
458463

mainwindow.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class MainWindow : public QMainWindow {
3434
QSqlQuery *sqlQuery;
3535
QTableWidgetItem *commandItem = nullptr;
3636
QTableWidgetItem *remarkItem = nullptr;
37+
QByteArray bufferReceived;
3738
QList<ComMessage> history;
3839
QTimer *timer = nullptr;
3940

0 commit comments

Comments
 (0)