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?
Forum Updated to NodeBB v4.3 + New Features

Why program crash when USB port changes?

Scheduled Pinned Locked Moved Solved General and Desktop
5 Posts 2 Posters 319 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