Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Why program crash when USB port changes?
Qt 6.11 is out! See what's new in the release blog

Why program crash when USB port changes?

Scheduled Pinned Locked Moved Solved General and Desktop
5 Posts 2 Posters 759 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V Offline
    V Offline
    viniltc
    wrote on last edited by
    #1

    Hi ,

    I have got a strange issue, and I'm banging my head to debug it!

    I have got a serial device connected to the PC.

    I have a button called "log" when clicked, it goes to the following slot and basically does some file manipulations.

    When I was testing this, it all worked fine.

    Now reconnect the device to a different USB port, now when I click to open the "log" the program crashes.

    This happens only when reconnecting the device to a different USB port.

    When I tried to debug it it shows the message:

    4bde65aa-fc19-4c35-a62e-cdc735ab606a-image.png

    I can see it is something related to a range of a QList. But I don't know why the program crashes and throw this message in some USB ports!??
    And other parts of the program works fine (I mean program crashes only when I click the log button)

    here is what I'm doing when "log" button is clicked

    void StageOneMain::on_pushButton_log_clicked()
    {
    
        QString namestring = "log_file_"+pLabel;
        QString filename = "logfilename.txt";
        QString newfilename = "log_file_"+pLabel+".txt";
    
    
        QFile originalFile(filename), newFile(newfilename);
    
        if(!originalFile.open(QIODevice::ReadOnly|QIODevice::Text))
        {
            qDebug() << "Error opening original log file: "<<originalFile.errorString();
        }
    
    
        QTextStream instream(& originalFile);
    
        QRegExp rx("(\\ |\\,|\\.|\\:|\\t)");
        QRegExp regExp_int (QLatin1Literal("[^0-9]+")); // reg ex to extract integer from a string
    
    
    
        if(newFile.open(QIODevice::WriteOnly|QIODevice::Text))
        {
    
            QTextStream outstream(& newFile);
    
           outstream<<"Date and Time of last log access: "<<QDateTime::currentDateTime().toString()<<"\n\n"; // to add date and time
           outstream<<"Stimulator serial port details: "<<"\n\n";
    
            foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
                QString s = QObject::tr("Port: ") + info.portName() + "\n"
                        + QObject::tr("Description: ") + info.description() + "\n"
                        + QObject::tr("Manufacturer: ") + info.manufacturer() + "\n"
                        + QObject::tr("Vendor Identifier: ") + (info.hasVendorIdentifier() ? QString::number(info.vendorIdentifier(), 16) : QString()) + "\n"
                        + QObject::tr("Product Identifier: ") + (info.hasProductIdentifier() ? QString::number(info.productIdentifier(), 16) : QString()) + "\n";
                  outstream<<s<<'\n';}
    
    
    
            int linecount_1 = 0;
    
            while(linecount_1<6){
    
                QString line = instream.readLine();
    
                if(linecount_1== 0)
                {
                    outstream <<line<< '\n';
                }
                if(linecount_1== 1)
                {
                    outstream <<line<< '\n';
                }
                if(linecount_1== 2)
                {
    
                    outstream <<line<< '\n';
                }
                if(linecount_1== 3)
                {
                    outstream <<line<< '\n';
                }
                if(linecount_1== 4)
                {
                    QStringList slist = line.split(regExp_int);
                    qDebug()<<"Integer part of line 4"<<slist;
                    int totTime = slist[1].toInt();
    
                    if(totTime > 60 && totTime  < 3600)
                    {
                        slist[1] =  QString::number(slist[1].toInt()/(60));
                        QString newline = "Power-on time: " + slist[1] +"min";
                        qDebug() << "newline: " << newline;
                        outstream <<newline<< '\n';
                    }
                    else if(totTime  > 3600)
                    {
                        slist[1] =  QString::number(slist[1].toInt()/(60*60));
                        QString newline = "Power-on time: " + slist[1]+"hrs";
                        qDebug() << "newline: " << newline;
                        outstream <<newline<< '\n';
                    }
                    else
                    {
                        QString newline = "Power-on time: " + slist[1] +"s";
                        qDebug() << "newline: " << newline;
                        outstream <<newline<< '\n';
                    }
    
    
    
                }
                if(linecount_1== 5)
                {
                    outstream <<line<< '\n';
                }
    
    
    
    
    
                ++linecount_1;
            }
    
            int nb_line = 6;
            while(!instream.atEnd())
            {
    
                QString line = instream.readLine();
    
    
                if(nb_line == 6 )
                {
    
                    QString newline = "Phase\t\t\tCount\tMin time (s)\tMax time (s)\tTotal time (s)";
                    outstream <<newline<< '\n';
                }
    
    
                if(nb_line == 7 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Rest\t\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    outstream <<newline<< '\n';
    
                }
    
    
                if(nb_line == 8 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Hand open (Key grip)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    outstream <<newline<< '\n';
    
                }
    
                if(nb_line == 9 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Finger Flexion (Key grip)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //    ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
    
                }
    
                if(nb_line == 10 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Grip Phase (Key grip)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
    
                    QString newline = slist.join("\t");
                    //   ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
    
    
    
                }
    
                if(nb_line == 11 )
                {
    
                    QStringList slist = line.split(rx);
                    slist[0]= "Release Object (Key grip)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //   ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
    
    
                }
    
                if(nb_line == 12 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Hand open (Palmar Grasp)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //   ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
                }
                if(nb_line == 13 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Finger Flexion (Palmar Grasp)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //   ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
                }
                if(nb_line == 14 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Grip Phase (Palmar Grasp)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //   ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
    
    
                }
                if(nb_line == 15 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Release Object (Palmar Grasp)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //   ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
                }
                if(nb_line == 16 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Intensity (Key Grip)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //   ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
                }
                if(nb_line == 17 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Intensity (Palmar Grasp)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //   ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
                }
                if(nb_line == 18 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Up (Key Grip)\t\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //   ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
                }
                if(nb_line == 19 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Down (Key Grip)\t\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //  ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
                }
                if(nb_line == 20 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Up (Palmar Grasp)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //  ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
                }
                if(nb_line == 21 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Down (Palmar Grasp)\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    //  ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
                }
                if(nb_line == 22 )
                {
                    QStringList slist = line.split(rx);
                    slist[0]= "Exercise phase\t\t";
                    slist[2]= QString::number(slist[2].toInt()/(1000));
                    slist[3]= QString::number(slist[3].toInt()/(1000));
                    slist[4]= QString::number(slist[4].toInt()/(1000));
                    QString newline = slist.join("\t");
                    // ui->textBrowser->append(newline);
                    outstream <<newline<< '\n';
    
                }
    
                ++nb_line;
            }
    
    
            originalFile.close();
            newFile.close();
            //originalFile.remove();
        }
    
          this->close()
          logwindow = new StimulatorLogWindow(pLabel, nullptr);
          logwindow -> setAttribute(Qt::WA_DeleteOnClose);
          logwindow -> show();
    
    }
    

    Can anyone spot an issue here?
    Apologies if my explanation is vague

    J.HilkJ 1 Reply Last reply
    0
    • V viniltc

      Hi ,

      I have got a strange issue, and I'm banging my head to debug it!

      I have got a serial device connected to the PC.

      I have a button called "log" when clicked, it goes to the following slot and basically does some file manipulations.

      When I was testing this, it all worked fine.

      Now reconnect the device to a different USB port, now when I click to open the "log" the program crashes.

      This happens only when reconnecting the device to a different USB port.

      When I tried to debug it it shows the message:

      4bde65aa-fc19-4c35-a62e-cdc735ab606a-image.png

      I can see it is something related to a range of a QList. But I don't know why the program crashes and throw this message in some USB ports!??
      And other parts of the program works fine (I mean program crashes only when I click the log button)

      here is what I'm doing when "log" button is clicked

      void StageOneMain::on_pushButton_log_clicked()
      {
      
          QString namestring = "log_file_"+pLabel;
          QString filename = "logfilename.txt";
          QString newfilename = "log_file_"+pLabel+".txt";
      
      
          QFile originalFile(filename), newFile(newfilename);
      
          if(!originalFile.open(QIODevice::ReadOnly|QIODevice::Text))
          {
              qDebug() << "Error opening original log file: "<<originalFile.errorString();
          }
      
      
          QTextStream instream(& originalFile);
      
          QRegExp rx("(\\ |\\,|\\.|\\:|\\t)");
          QRegExp regExp_int (QLatin1Literal("[^0-9]+")); // reg ex to extract integer from a string
      
      
      
          if(newFile.open(QIODevice::WriteOnly|QIODevice::Text))
          {
      
              QTextStream outstream(& newFile);
      
             outstream<<"Date and Time of last log access: "<<QDateTime::currentDateTime().toString()<<"\n\n"; // to add date and time
             outstream<<"Stimulator serial port details: "<<"\n\n";
      
              foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
                  QString s = QObject::tr("Port: ") + info.portName() + "\n"
                          + QObject::tr("Description: ") + info.description() + "\n"
                          + QObject::tr("Manufacturer: ") + info.manufacturer() + "\n"
                          + QObject::tr("Vendor Identifier: ") + (info.hasVendorIdentifier() ? QString::number(info.vendorIdentifier(), 16) : QString()) + "\n"
                          + QObject::tr("Product Identifier: ") + (info.hasProductIdentifier() ? QString::number(info.productIdentifier(), 16) : QString()) + "\n";
                    outstream<<s<<'\n';}
      
      
      
              int linecount_1 = 0;
      
              while(linecount_1<6){
      
                  QString line = instream.readLine();
      
                  if(linecount_1== 0)
                  {
                      outstream <<line<< '\n';
                  }
                  if(linecount_1== 1)
                  {
                      outstream <<line<< '\n';
                  }
                  if(linecount_1== 2)
                  {
      
                      outstream <<line<< '\n';
                  }
                  if(linecount_1== 3)
                  {
                      outstream <<line<< '\n';
                  }
                  if(linecount_1== 4)
                  {
                      QStringList slist = line.split(regExp_int);
                      qDebug()<<"Integer part of line 4"<<slist;
                      int totTime = slist[1].toInt();
      
                      if(totTime > 60 && totTime  < 3600)
                      {
                          slist[1] =  QString::number(slist[1].toInt()/(60));
                          QString newline = "Power-on time: " + slist[1] +"min";
                          qDebug() << "newline: " << newline;
                          outstream <<newline<< '\n';
                      }
                      else if(totTime  > 3600)
                      {
                          slist[1] =  QString::number(slist[1].toInt()/(60*60));
                          QString newline = "Power-on time: " + slist[1]+"hrs";
                          qDebug() << "newline: " << newline;
                          outstream <<newline<< '\n';
                      }
                      else
                      {
                          QString newline = "Power-on time: " + slist[1] +"s";
                          qDebug() << "newline: " << newline;
                          outstream <<newline<< '\n';
                      }
      
      
      
                  }
                  if(linecount_1== 5)
                  {
                      outstream <<line<< '\n';
                  }
      
      
      
      
      
                  ++linecount_1;
              }
      
              int nb_line = 6;
              while(!instream.atEnd())
              {
      
                  QString line = instream.readLine();
      
      
                  if(nb_line == 6 )
                  {
      
                      QString newline = "Phase\t\t\tCount\tMin time (s)\tMax time (s)\tTotal time (s)";
                      outstream <<newline<< '\n';
                  }
      
      
                  if(nb_line == 7 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Rest\t\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      outstream <<newline<< '\n';
      
                  }
      
      
                  if(nb_line == 8 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Hand open (Key grip)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      outstream <<newline<< '\n';
      
                  }
      
                  if(nb_line == 9 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Finger Flexion (Key grip)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //    ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
      
                  }
      
                  if(nb_line == 10 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Grip Phase (Key grip)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
      
                      QString newline = slist.join("\t");
                      //   ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
      
      
      
                  }
      
                  if(nb_line == 11 )
                  {
      
                      QStringList slist = line.split(rx);
                      slist[0]= "Release Object (Key grip)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //   ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
      
      
                  }
      
                  if(nb_line == 12 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Hand open (Palmar Grasp)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //   ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
                  }
                  if(nb_line == 13 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Finger Flexion (Palmar Grasp)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //   ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
                  }
                  if(nb_line == 14 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Grip Phase (Palmar Grasp)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //   ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
      
      
                  }
                  if(nb_line == 15 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Release Object (Palmar Grasp)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //   ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
                  }
                  if(nb_line == 16 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Intensity (Key Grip)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //   ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
                  }
                  if(nb_line == 17 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Intensity (Palmar Grasp)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //   ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
                  }
                  if(nb_line == 18 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Up (Key Grip)\t\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //   ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
                  }
                  if(nb_line == 19 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Down (Key Grip)\t\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //  ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
                  }
                  if(nb_line == 20 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Up (Palmar Grasp)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //  ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
                  }
                  if(nb_line == 21 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Down (Palmar Grasp)\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      //  ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
                  }
                  if(nb_line == 22 )
                  {
                      QStringList slist = line.split(rx);
                      slist[0]= "Exercise phase\t\t";
                      slist[2]= QString::number(slist[2].toInt()/(1000));
                      slist[3]= QString::number(slist[3].toInt()/(1000));
                      slist[4]= QString::number(slist[4].toInt()/(1000));
                      QString newline = slist.join("\t");
                      // ui->textBrowser->append(newline);
                      outstream <<newline<< '\n';
      
                  }
      
                  ++nb_line;
              }
      
      
              originalFile.close();
              newFile.close();
              //originalFile.remove();
          }
      
            this->close()
            logwindow = new StimulatorLogWindow(pLabel, nullptr);
            logwindow -> setAttribute(Qt::WA_DeleteOnClose);
            logwindow -> show();
      
      }
      

      Can anyone spot an issue here?
      Apologies if my explanation is vague

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #2

      @viniltc you do a bunch of splits of QString into QStringList - aka QList<QString> - and you do no checks, if the size of your list is actually the expected length. You simply access it via the [] operator.

      I would start checking there


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      1 Reply Last reply
      2
      • V Offline
        V Offline
        viniltc
        wrote on last edited by
        #3

        @J-Hilk Hi, what check do you mean, can you show me an example please?

        J.HilkJ 1 Reply Last reply
        0
        • V viniltc

          @J-Hilk Hi, what check do you mean, can you show me an example please?

          J.HilkJ Offline
          J.HilkJ Offline
          J.Hilk
          Moderators
          wrote on last edited by
          #4

          @viniltc

          QStringList slist = line.split(rx);
          if(slist.size() >4) {
          slist[0]= "Grip Phase (Key grip)\t";
          slist[2]= QString::number(slist[2].toInt()/(1000));
          slist[3]= QString::number(slist[3].toInt()/(1000));
          slist[4]= QString::number(slist[4].toInt()/(1000));
          } else {
              qDebug() << "Problem with string" << slist << line;
          }
          

          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


          Q: What's that?
          A: It's blue light.
          Q: What does it do?
          A: It turns blue.

          V 1 Reply Last reply
          4
          • J.HilkJ J.Hilk

            @viniltc

            QStringList slist = line.split(rx);
            if(slist.size() >4) {
            slist[0]= "Grip Phase (Key grip)\t";
            slist[2]= QString::number(slist[2].toInt()/(1000));
            slist[3]= QString::number(slist[3].toInt()/(1000));
            slist[4]= QString::number(slist[4].toInt()/(1000));
            } else {
                qDebug() << "Problem with string" << slist << line;
            }
            
            V Offline
            V Offline
            viniltc
            wrote on last edited by
            #5

            @J-Hilk Thanks for the feedback. It solved! It was an issue related to printing serial port information

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved