添加4g信号判断界面调整参数
authorsnickersun <snickersun@163.com>
Tue, 21 Apr 2026 06:59:25 +0000 (14:59 +0800)
committersnickersun <snickersun@163.com>
Tue, 21 Apr 2026 06:59:25 +0000 (14:59 +0800)
mainwindow.cpp
mainwindow.h
mainwindow.ui

index c90e947..a6bcc62 100644 (file)
@@ -37,7 +37,7 @@ MainWindow::MainWindow(QWidget *parent)
     , ui(new Ui::MainWindow)
 {
     ui->setupUi(this);
-    setWindowTitle("雷鸟产测工具 V1.8");
+    setWindowTitle("雷鸟产测工具 V1.9");
     
     // 确保控制台输出使用UTF-8编码
     QTextCodec *utf8Codec = QTextCodec::codecForName("UTF-8");
@@ -946,6 +946,16 @@ bool MainWindow::isEGModem() const
     return result;
 }
 
+double MainWindow::getCat1SignalThreshold() const
+{
+    const QString s = ui->cat1RSSILineEdit->text().trimmed();
+    if (s.isEmpty())
+        return 25.0;
+    bool ok = false;
+    const double v = s.toDouble(&ok);
+    return ok ? v : 25.0;
+}
+
 // 解析MESSAGE_4G_NETWORK_STAT_CHANGED格式数据
 void MainWindow::parseNetworkStatChanged(const QString& data)
 {
@@ -3596,13 +3606,14 @@ void MainWindow::checkSignalAndSimValues(const QString& data)
     }
     
     // 判断4G测试是否通过(这段代码理论上不会执行到)
+    const double cat1Th = getCat1SignalThreshold();
     bool simOk = (simValue == 1);
-    bool signalOk = (signalValue > 25);
+    bool signalOk = (signalValue > cat1Th);
     bool testPassed = simOk && signalOk;
     
     qDebug() << "4G测试判断结果:";
     qDebug() << "  sim值:" << simValue << "(期望: 1)" << "检查结果:" << (simOk ? "通过" : "失败");
-    qDebug() << "  signal值:" << signalValue << "(期望: >25)" << "检查结果:" << (signalOk ? "通过" : "失败");
+    qDebug() << "  signal值:" << signalValue << "(期望: >" << cat1Th << ")" << "检查结果:" << (signalOk ? "通过" : "失败");
     qDebug() << "  最终测试结果:" << (testPassed ? "通过" : "失败");
     qDebug() << "  警告:此代码不应该执行到,因为已启动CAT1测试";
     
@@ -3620,8 +3631,8 @@ void MainWindow::checkSignalAndSimValues(const QString& data)
         }
         if (signalValue == 99) {
             failReason += QString("无效信号值(值:%1)").arg(signalValue);
-        } else if (signalValue <= 25) {
-            failReason += QString("信号强度不足(值:%1,期望:>25)").arg(signalValue);
+        } else if (signalValue <= cat1Th) {
+            failReason += QString("信号强度不足(值:%1,期望:>%2)").arg(signalValue).arg(cat1Th, 0, 'g', 10);
         }
 
         ui->statusbar->showMessage(QString("4G测试失败 - %1").arg(failReason), 3000);
@@ -5280,7 +5291,7 @@ void MainWindow::checkCat1SignalResult(const QString& data)
             } else {
             // 累加有效信号值用于计算平均值
             cat1SignalTotalValue += signalValue;
-            if (signalValue > 25) {
+            if (signalValue > getCat1SignalThreshold()) {
                 cat1SignalGoodCount++;
             }
             
@@ -5382,6 +5393,7 @@ void MainWindow::onCat1SignalTimer()
         // 计算平均信号值并判断测试结果
         int validCount = cat1SignalReceivedCount - cat1Signal99Count;
         double averageSignal = validCount > 0 ? (double)cat1SignalTotalValue / validCount : 0;
+        const double signalThreshold = getCat1SignalThreshold();
         
         qDebug() << "CAT1信号测试完成,统计结果:";
         qDebug() << "  发送指令次数:" << cat1SignalTestCount;
@@ -5390,6 +5402,7 @@ void MainWindow::onCat1SignalTimer()
         qDebug() << "  无效信号(99)次数:" << cat1Signal99Count;
         qDebug() << "  信号值总和:" << cat1SignalTotalValue;
         qDebug() << "  平均信号值:" << averageSignal;
+        qDebug() << "  门槛(4G Min Signal):" << signalThreshold;
         
         if (cat1Signal99Count >= 5) {
             // 连续5次都是99,判定为失败
@@ -5406,10 +5419,12 @@ void MainWindow::onCat1SignalTimer()
                 updateTestStatus("fourg_signal", STATUS_FAILED);
                 updateTestStatus("ping", STATUS_UNTESTED);
             }
-        } else if (validCount > 0 && averageSignal >= 25.0) {
-            // 平均信号值大于等于25,判定为通过
-            qDebug() << "CAT1信号测试通过,平均信号值" << averageSignal << "大于等于25";
-            ui->statusbar->showMessage(QString("CAT1信号测试通过 - 平均信号值:%1").arg(averageSignal, 0, 'f', 1), 3000);
+        } else if (validCount > 0 && averageSignal >= signalThreshold) {
+            // 平均信号值大于等于门槛,判定为通过
+            qDebug() << "CAT1信号测试通过,平均信号值" << averageSignal << "大于等于门槛" << signalThreshold;
+            ui->statusbar->showMessage(QString("CAT1信号测试通过 - 平均:%1 门槛:%2")
+                                          .arg(averageSignal, 0, 'f', 1)
+                                          .arg(signalThreshold, 0, 'g', 10), 3000);
 
             updateTestStatus("fourg_signal", STATUS_SUCCESS);
 
@@ -5422,12 +5437,14 @@ void MainWindow::onCat1SignalTimer()
                 updateTestStatus("ping", STATUS_UNTESTED);
             }
     } else {
-            // 平均信号值小于25或没有有效数据,判定为失败
+            // 平均信号值低于门槛或没有有效数据,判定为失败
             QString failReason;
             if (validCount == 0) {
                 failReason = "没有有效信号数据";
             } else {
-                failReason = QString("平均信号值%1小于25").arg(averageSignal, 0, 'f', 1);
+                failReason = QString("平均信号值%1小于门槛%2")
+                                 .arg(averageSignal, 0, 'f', 1)
+                                 .arg(signalThreshold, 0, 'g', 10);
             }
             
             qDebug() << "CAT1信号测试失败," << failReason;
index 2f74975..3c35dd3 100644 (file)
@@ -127,6 +127,8 @@ private slots:
     void checkPingTestResult(const QString& data); // 检查Ping测试结果
     void onPingTestTimeout();               // Ping测试超时
     bool isEGModem() const;
+    /** 4G Min Signal:未填写时用 25,有填写时用输入数值 */
+    double getCat1SignalThreshold() const;
     bool isValidIMEI(const QString& imei);
     bool isValidICCID(const QString& iccid);
 
index 478a0e2..9b83cb2 100644 (file)
@@ -91,6 +91,7 @@ background-color: #7B1FA2;
             <property name="font">
              <font>
               <family>Arial Black</family>
+              <pointsize>14</pointsize>
               <weight>75</weight>
               <bold>true</bold>
              </font>
@@ -224,6 +225,7 @@ background-color: #F57C00;
           <property name="font">
            <font>
             <family>Arial Black</family>
+            <pointsize>14</pointsize>
             <weight>75</weight>
             <bold>true</bold>
            </font>
@@ -419,6 +421,26 @@ background-color: #F57C00;
           </property>
          </widget>
         </item>
+        <item>
+         <widget class="QLabel" name="label_6">
+          <property name="text">
+           <string>4G Min RSSI</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLineEdit" name="cat1RSSILineEdit">
+          <property name="toolTip">
+           <string/>
+          </property>
+          <property name="whatsThis">
+           <string/>
+          </property>
+          <property name="placeholderText">
+           <string>默认 25</string>
+          </property>
+         </widget>
+        </item>
        </layout>
       </item>
       <item>
@@ -486,11 +508,35 @@ background-color: #F57C00;
          </widget>
         </item>
         <item>
-         <widget class="QPushButton" name="sendButton">
-          <property name="text">
-           <string>发送</string>
-          </property>
-         </widget>
+         <layout class="QVBoxLayout" name="verticalLayout_5">
+          <item>
+           <widget class="QPushButton" name="sendButton">
+            <property name="text">
+             <string>发送</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="label_7">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Maximum" vsizetype="Maximum">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="font">
+             <font>
+              <family>Arial</family>
+              <pointsize>10</pointsize>
+              <kerning>true</kerning>
+             </font>
+            </property>
+            <property name="text">
+             <string>指令自动加回车</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
         </item>
        </layout>
       </item>
@@ -734,8 +780,8 @@ background-color: #F57C00;
           <rect>
            <x>0</x>
            <y>0</y>
-           <width>552</width>
-           <height>630</height>
+           <width>503</width>
+           <height>592</height>
           </rect>
          </property>
          <property name="title">
@@ -1303,7 +1349,7 @@ background-color: #F57C00;
      <x>0</x>
      <y>0</y>
      <width>1309</width>
-     <height>21</height>
+     <height>36</height>
     </rect>
    </property>
   </widget>