更新 src/qt_source/mainwindow.cpp

修改过滤条件解决部分特殊字符导致标签信息过滤
This commit is contained in:
zhangwei 2024-04-18 07:09:07 +00:00 committed by Mr.V
parent 35f1e6dd81
commit 9c365e2658
1 changed files with 33 additions and 13 deletions

View File

@ -15,7 +15,7 @@ MainWindow::MainWindow(QWidget *parent)
this->statusBar = new QStatusBar();
this->statusInfo = new QLabel("初始化完成",this);
this->statusBar->addPermanentWidget(this->statusInfo);//显示正常信息
QLabel* statusVersion = new QLabel("开启时间:" + QDateTime::currentDateTime().toString("yy.MM.dd.hh.mm"),this);
QLabel* statusVersion = new QLabel("开启时间:" + QDateTime::currentDateTime().toString("yy-MM-dd hh:mm"),this);
this->statusBar->addWidget(statusVersion);
layout()->addWidget(this->statusBar);
@ -142,7 +142,7 @@ MainWindow::MainWindow(QWidget *parent)
}
});
connect(this->tcpClient, &TcpClient::getDirectionSignals, this, [=](int direction) {
if (this->iDirection != direction)
if (this->iDirection == 0)
{
this->logInfo("获得方向判定:" + QString(direction > -1 ? (direction > 0 ? "需识别" : "待定") : "无需上传"));
this->iDirection = direction;
@ -598,17 +598,17 @@ void MainWindow::getQueueDataThread()
if (i.size() == 26 || i.size() == 24)
{
// 车厢信息
QString strTrainInfo = i.left(14);
QString strTrainInfo = i.mid(1,13);
if (vecTrain.empty() || !vecTrain.contains(strTrainInfo))
{
bool isNoCarriage = false;
int carT = strTrainInfo.mid(3, 2).simplified().toInt(&isNoCarriage);
if (isNoCarriage && carT >= 10) continue;
// 因信号不稳定 增加一行过滤 出现文字中带有字母及数字以外的字符时,过滤
if (!strTrainInfo.contains(QRegExp("^[A-Z0-9\\s]+$"))) continue;
// 因信号不稳定 增加一行过滤 出现读到的数据里 空格替代了实际字符的情况
if (strTrainInfo.mid(7, 7).simplified().size() < 7) continue;
// 判断是否是车头 车头的第14位是 K或H (慎重)
if (!i.mid(14, 1).contains(QRegExp("^[0-9]+$"))) continue;
// 过滤掉车号中有非数字的
if (!strTrainInfo.right(7).contains(QRegExp("^[0-9]+$"))) continue;
// 因信号不稳定 增加一行过滤 出现读到的编号数据里 空格替代了实际字符的情况
if (strTrainInfo.right(7).simplified().size() < 7) continue;
vecTrain.append(strTrainInfo);
int train_order = vecTrain.size();
this->resultTableModel_->setItem(train_order - 1, 0, new QStandardItem(strTrainInfo));
@ -666,7 +666,13 @@ void MainWindow::upRfid(QString rfidInfo)
QString info = this->vecTrain.back();
int order = this->vecTrain.size();
info = info.mid(1,info.size() - 1);
if (order > this->socketServerConfig_.delayed_upload && this->iDirection == 0)
{
this->iDirection = 1;
}
if (!this->baseConfig_.useSocketServer) this->iDirection = 1;
// info = info.mid(1,info.size() - 1);
TrainInfo trainInfo;
trainInfo.carriageType = info.left(6).simplified().toStdString();
@ -676,7 +682,21 @@ void MainWindow::upRfid(QString rfidInfo)
trainInfo.collectTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz").toStdString();
trainInfo.strRfidInfo = rfidInfo.toStdString();
this->queueTrainInfo_.push(trainInfo);
// this->queueTrainInfo_.push(trainInfo);
this->queueTmpTrainInfo_.push(trainInfo);
if (this->iDirection < 0)
{
this->queueTmpTrainInfo_.clear();
return;
}
if (this->iDirection > 0)
{
while (!this->queueTmpTrainInfo_.isEmpty())
{
this->queueTrainInfo_.push(this->queueTmpTrainInfo_.pop());
}
}
}
void MainWindow::IdentifyTypeUpdate() {
@ -721,7 +741,7 @@ void MainWindow::ErrorSlots(const QString &info) {
void MainWindow::readTestInfo()
{
if (this->isOpenCom)
if (this->isOpenCom || ui->openComButton->text() == "关闭串口")
{
logWarn("请先关闭串口后进行测试操作!");
return;