Bladeren bron

1、修改8寸屏断线后不能恢复通信、通信中断数据不清零的bug

liyuezong 1 jaar geleden
bovenliggende
commit
a66e7562c6
4 gewijzigde bestanden met toevoegingen van 95 en 101 verwijderingen
  1. 2 1
      Qt/SmartPDU_QT/PDUInfoDef.cpp
  2. 1 0
      Qt/SmartPDU_QT/PDUInfoDef.h
  3. 66 74
      Qt/SmartPDU_QT/mainwidget.cpp
  4. 26 26
      Qt/SmartPDU_QT/serialinfo.cpp

+ 2 - 1
Qt/SmartPDU_QT/PDUInfoDef.cpp

@@ -6,7 +6,8 @@ int m_TotalCHNum=0;
 PDUAllInfo m_PDUAllInfo;
 PDUAllInfo m_PDUAllInfo;
 PDUCHInfo m_PDUCHInfo[64];
 PDUCHInfo m_PDUCHInfo[64];
 
 
-QString m_DevFile;
+QString m_DevFile="";
+QString m_PreDevFile="";
 int m_DevVid=0;
 int m_DevVid=0;
 int m_DevPid=0;
 int m_DevPid=0;
 bool use_java=true;
 bool use_java=true;

+ 1 - 0
Qt/SmartPDU_QT/PDUInfoDef.h

@@ -69,6 +69,7 @@ extern PDUAllInfo m_PDUAllInfo;
 extern PDUCHInfo m_PDUCHInfo[64];
 extern PDUCHInfo m_PDUCHInfo[64];
 
 
 extern QString m_DevFile;
 extern QString m_DevFile;
+extern QString m_PreDevFile;
 extern int m_DevVid;
 extern int m_DevVid;
 extern int m_DevPid;
 extern int m_DevPid;
 extern bool use_java;
 extern bool use_java;

+ 66 - 74
Qt/SmartPDU_QT/mainwidget.cpp

@@ -25,16 +25,16 @@ MainWidget::MainWidget(QWidget *parent)
         m_chWidget[i].chid=i+1;
         m_chWidget[i].chid=i+1;
     }
     }
 
 
+    m_DevFile="";//"/dev/bus/usb/001/003";
     _timer_update_info = new QTimer(this);
     _timer_update_info = new QTimer(this);
     _timer_update_info->setInterval(1000);
     _timer_update_info->setInterval(1000);
-
     connect(_timer_update_info, SIGNAL(timeout()), this, SLOT(UpdateStatusInfo()));
     connect(_timer_update_info, SIGNAL(timeout()), this, SLOT(UpdateStatusInfo()));
+    connect(_timer_update_info, SIGNAL(timeout()), this, SLOT(on_Button_checkserial_clicked()));
+    connect(_timer_update_info, SIGNAL(timeout()), this, SLOT(on_Button_openserial_clicked()));
+    //on_Button_checkserial_clicked();
+    //on_Button_openserial_clicked();
     _timer_update_info->start();
     _timer_update_info->start();
 
 
-    m_DevFile="/dev/bus/usb/001/003";
-    on_Button_checkserial_clicked();
-    on_Button_openserial_clicked();
-
     QTimer* timSend = new QTimer(this);
     QTimer* timSend = new QTimer(this);
     timSend->setInterval(1000);// 设置默认定时时长1000ms
     timSend->setInterval(1000);// 设置默认定时时长1000ms
 
 
@@ -261,74 +261,59 @@ void MainWidget::on_Button_openserial_clicked()
     }
     }
 
 
     else
     else
-    {
-        m_DevFile = ui->serialCB_3->currentText();
-        requestUsbPermission(m_DevFile);
-        if(ui->Button_openserial_3->text() == "打开串口"){
-            requestUsbPermission(m_DevFile);
-
-            QAndroidJniObject javaString = QAndroidJniObject::fromString(m_DevFile);
-            jboolean res = QAndroidJniObject::callStaticMethod<jboolean>(
-                        "usb/USBListActivity",
-                        "OpenSerial",
-                        "(Ljava/lang/String;)Z",
-                        javaString.object<jstring>());
-            if (res==true)
-            {
-                m_openflag=true;
-                lblPortState->setText("connected");
-                lblPortState->setStyleSheet("color:green");
-                ui->Button_openserial_3->setText("关闭串口");
-                //QMessageBox::information(this, "确认", "打开成功!");
-            }
-            else
+    { 
+        if(m_openflag)
+        {
+            if(m_PreDevFile!=m_DevFile || m_DevFile=="")
             {
             {
                 m_openflag=false;
                 m_openflag=false;
-                lblPortState->setText("disconnected");
-                lblPortState->setStyleSheet("color:red");
-                ui->Button_openserial_3->setText("打开串口");
-                QMessageBox::information(this, "确认", "打开失败!");
+                if(m_PreDevFile!="")
+                {
+                    QAndroidJniObject javaString = QAndroidJniObject::fromString(m_PreDevFile);
+                    jboolean res = QAndroidJniObject::callStaticMethod<jboolean>(
+                                "usb/USBListActivity",
+                                "closeSerial",
+                                "(Ljava/lang/String;)Z",
+                                javaString.object<jstring>());
+                }
             }
             }
-
-            /*
-        QAndroidJniObject javaString = QAndroidJniObject::fromString(m_DevFile);
-        QAndroidJniObject restring = QAndroidJniObject::callStaticObjectMethod(
-              "usb/USBListActivity",
-              "OpenSerial",
-              "(Ljava/lang/String;)Ljava/lang/String;",
-               javaString.object<jstring>());
-
-        QString recinfo=restring.toString();
-        QMessageBox::information(this, "确认", recinfo);*/
         }
         }
-        else
-        {
-            QAndroidJniObject javaString = QAndroidJniObject::fromString(m_DevFile);
-            jboolean res = QAndroidJniObject::callStaticMethod<jboolean>(
-                        "usb/USBListActivity",
-                        "closeSerial",
-                        "(Ljava/lang/String;)Z",
-                        javaString.object<jstring>());
-            if (res==true)
-            {
-                m_openflag=false;
-                lblPortState->setText("disconnected");
-                lblPortState->setStyleSheet("color:red");
-                ui->Button_openserial_3->setText("打开串口");
-                //QMessageBox::information(this, "确认", "关闭成功!");
 
 
-            }
-            else
+        if(!m_openflag)
+        {
+            if( m_DevFile!="")
             {
             {
-                m_openflag=true;
-                lblPortState->setText("connected");
-                lblPortState->setStyleSheet("color:green");
-                ui->Button_openserial_3->setText("关闭串口");
-                QMessageBox::information(this, "确认", " 关闭失败!");
+                requestUsbPermission(m_DevFile);
+
+                QAndroidJniObject javaString = QAndroidJniObject::fromString(m_DevFile);
+                jboolean res = QAndroidJniObject::callStaticMethod<jboolean>(
+                                "usb/USBListActivity",
+                                "OpenSerial",
+                                "(Ljava/lang/String;)Z",
+                                javaString.object<jstring>());
+                 if (res==true)
+                 {
+                      m_openflag=true;
+                      //QMessageBox::information(this, "确认", "打开成功!");
+                  }
             }
             }
 
 
         }
         }
 
 
+        m_PreDevFile=m_DevFile;
+
+        if(!m_openflag)
+        {
+            lblPortState->setText("disconnected");
+            lblPortState->setStyleSheet("color:red");
+            ui->Button_openserial_3->setText("打开串口");
+        }
+        else
+        {
+            lblPortState->setText("connected");
+            lblPortState->setStyleSheet("color:green");
+            ui->Button_openserial_3->setText("关闭串口");
+        }
     }
     }
 }
 }
 /*发送数据*/
 /*发送数据*/
@@ -508,24 +493,31 @@ void MainWidget::on_Button_checkserial_clicked()
 
 
         QAndroidJniObject usbDevObj;
         QAndroidJniObject usbDevObj;
         QAndroidJniObject usbDevObjIter;
         QAndroidJniObject usbDevObjIter;
-        for (int i = 0; i < devListSize; ++i)
+        if(devListSize<1)
         {
         {
-            usbDevObjIter = devListIter.callObjectMethod("next",
+            m_DevFile="";
+        }
+        else
+        {
+            for (int i = 0; i < devListSize; ++i)
+            {
+                usbDevObjIter = devListIter.callObjectMethod("next",
                                                          "()Ljava/lang/Object;");
                                                          "()Ljava/lang/Object;");
-            usbDevObj = usbDeviceListHashMap.callObjectMethod("get",
+                usbDevObj = usbDeviceListHashMap.callObjectMethod("get",
                                                               "(Ljava/lang/Object;)Ljava/lang/Object;",
                                                               "(Ljava/lang/Object;)Ljava/lang/Object;",
                                                               usbDevObjIter.object());
                                                               usbDevObjIter.object());
-            m_DevVid = usbDevObj.callMethod<jint>("getVendorId", "()I");
-            m_DevPid = usbDevObj.callMethod<jint>("getProductId", "()I");
-            //QAndroidJniObject str((usbDevObj.callMethod<jstring>("getDeviceName", "()Ljava/lang/String;"));
-            QAndroidJniObject str( usbDevObj.callObjectMethod(
+                m_DevVid = usbDevObj.callMethod<jint>("getVendorId", "()I");
+                m_DevPid = usbDevObj.callMethod<jint>("getProductId", "()I");
+                //QAndroidJniObject str((usbDevObj.callMethod<jstring>("getDeviceName", "()Ljava/lang/String;"));
+                QAndroidJniObject str( usbDevObj.callObjectMethod(
                                        "getDeviceName",
                                        "getDeviceName",
                                        "()Ljava/lang/String;"
                                        "()Ljava/lang/String;"
                                        ).object<jstring>());
                                        ).object<jstring>());
-            m_DevFile = str.toString();
-            findFlag=true;
-            ui->serialCB_3->addItem(m_DevFile);
-            modifyUsbDeviceXml("device_filter.xml",QString::number(m_DevVid),QString::number(m_DevPid));
+                m_DevFile = str.toString();
+                findFlag=true;
+                ui->serialCB_3->addItem(m_DevFile);
+                modifyUsbDeviceXml("device_filter.xml",QString::number(m_DevVid),QString::number(m_DevPid));
+            }
         }
         }
         //if(findFlag) QMessageBox::information(this, "确认", "检测到USB设备:"+m_DevFile);
         //if(findFlag) QMessageBox::information(this, "确认", "检测到USB设备:"+m_DevFile);
     }
     }

+ 26 - 26
Qt/SmartPDU_QT/serialinfo.cpp

@@ -172,10 +172,10 @@ void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,8);
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,8);
         if(pRecVector.size()<8)
         if(pRecVector.size()<8)
         {
         {
-            //m_PDUAllInfo.AllVoltage_L1 = 0;
-            //m_PDUAllInfo.AllCurrent_L1 = 0;
-            //m_PDUAllInfo.AllPower_L1 = 0;
-            //m_PDUAllInfo.AllConsumption_L1 = 0;
+            m_PDUAllInfo.AllVoltage_L1 = 0;
+            m_PDUAllInfo.AllCurrent_L1 = 0;
+            m_PDUAllInfo.AllPower_L1 = 0;
+            m_PDUAllInfo.AllConsumption_L1 = 0;
             return;
             return;
         }
         }
         m_PDUAllInfo.AllVoltage_L1 = ((pRecVector[1] << 16) + pRecVector[0] )/1000.0f; // Low byte
         m_PDUAllInfo.AllVoltage_L1 = ((pRecVector[1] << 16) + pRecVector[0] )/1000.0f; // Low byte
@@ -188,10 +188,10 @@ void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,8);
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,8);
         if(pRecVector.size()<8)
         if(pRecVector.size()<8)
         {
         {
-            //m_PDUAllInfo.AllVoltage_L2 = 0;
-            //m_PDUAllInfo.AllCurrent_L2 = 0;
-            //m_PDUAllInfo.AllPower_L2 = 0;
-            //m_PDUAllInfo.AllConsumption_L2 = 0;
+            m_PDUAllInfo.AllVoltage_L2 = 0;
+            m_PDUAllInfo.AllCurrent_L2 = 0;
+            m_PDUAllInfo.AllPower_L2 = 0;
+            m_PDUAllInfo.AllConsumption_L2 = 0;
             return;
             return;
         }
         }
         m_PDUAllInfo.AllVoltage_L2 = ((pRecVector[1] << 16) + pRecVector[0] )/1000.0f; // Low byte
         m_PDUAllInfo.AllVoltage_L2 = ((pRecVector[1] << 16) + pRecVector[0] )/1000.0f; // Low byte
@@ -204,10 +204,10 @@ void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,8);
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,8);
         if(pRecVector.size()<8)
         if(pRecVector.size()<8)
         {
         {
-            //m_PDUAllInfo.AllVoltage_L3 = 0;
-            //m_PDUAllInfo.AllCurrent_L3 = 0;
-            //m_PDUAllInfo.AllPower_L3 = 0;
-            //m_PDUAllInfo.AllConsumption_L3 = 0;
+            m_PDUAllInfo.AllVoltage_L3 = 0;
+            m_PDUAllInfo.AllCurrent_L3 = 0;
+            m_PDUAllInfo.AllPower_L3 = 0;
+            m_PDUAllInfo.AllConsumption_L3 = 0;
             return;
             return;
         }
         }
         m_PDUAllInfo.AllVoltage_L3 = ((pRecVector[1] << 16) + pRecVector[0] )/1000.0f; // Low byte
         m_PDUAllInfo.AllVoltage_L3 = ((pRecVector[1] << 16) + pRecVector[0] )/1000.0f; // Low byte
@@ -220,10 +220,10 @@ void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,14);
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,14);
         if(pRecVector.size()<14)
         if(pRecVector.size()<14)
         {
         {
-            //for(int i=0;i<14;i++)
-            //{
-            //    m_PDUCHInfo[i].CHStatus= false; // Low byte
-            //}
+            for(int i=0;i<14;i++)
+            {
+                m_PDUCHInfo[i].CHStatus= false; // Low byte
+            }
             return;
             return;
         }
         }
         for(int i=0;i<14;i++)
         for(int i=0;i<14;i++)
@@ -236,11 +236,11 @@ void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,16);
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,16);
         if(pRecVector.size()<16)
         if(pRecVector.size()<16)
         {
         {
-            //m_PDUAllInfo.Sensor_Temperature = 0;
-            //m_PDUAllInfo.Sensor_Humidity = 0;
-            //m_PDUAllInfo.Sensor_CO2 = 0;
-            //m_PDUAllInfo.Sensor_INTemperature = 0;
-            //m_PDUAllInfo.Sensor_OUTTemperature = 0;
+            m_PDUAllInfo.Sensor_Temperature = 0;
+            m_PDUAllInfo.Sensor_Humidity = 0;
+            m_PDUAllInfo.Sensor_LeakFlag = false;
+            m_PDUAllInfo.Sensor_INTemperature = 0;
+            m_PDUAllInfo.Sensor_OUTTemperature = 0;
             return;
             return;
         }
         }
         m_PDUAllInfo.Sensor_Temperature = ((pRecVector[1] << 16) + pRecVector[0] )/1000.0f;
         m_PDUAllInfo.Sensor_Temperature = ((pRecVector[1] << 16) + pRecVector[0] )/1000.0f;
@@ -255,7 +255,7 @@ void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,4);
         QVector<quint16> pRecVector=parseModbusResponse(Recstr,4);
         if(pRecVector.size()<4)
         if(pRecVector.size()<4)
         {
         {
-            //m_PDUAllInfo.Sensor_WaterImmersion=false;
+            m_PDUAllInfo.Sensor_WaterImmersion=false;
             return;
             return;
         }
         }
         bool immFlag = pRecVector[0] & 0xFFFF; // Low byte
         bool immFlag = pRecVector[0] & 0xFFFF; // Low byte
@@ -270,10 +270,10 @@ void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr
                 QVector<quint16> pRecVector=parseModbusResponse(Recstr,30);
                 QVector<quint16> pRecVector=parseModbusResponse(Recstr,30);
                 if(pRecVector.size()<30)
                 if(pRecVector.size()<30)
                 {
                 {
-                    //m_PDUCHInfo[i].CHVoltage=0;
-                    //m_PDUCHInfo[i].CHCurrent=0;
-                    //m_PDUCHInfo[i].CHPower=0;
-                    //m_PDUCHInfo[i].CHConsumption=0;
+                    m_PDUCHInfo[i].CHVoltage=0;
+                    m_PDUCHInfo[i].CHCurrent=0;
+                    m_PDUCHInfo[i].CHPower=0;
+                    m_PDUCHInfo[i].CHConsumption=0;
                     return;
                     return;
                 }
                 }