Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. Problema con QThread y QSerialport
Forum Updated to NodeBB v4.3 + New Features

Problema con QThread y QSerialport

Scheduled Pinned Locked Moved Spanish
3 Posts 2 Posters 1.4k 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.
  • S Offline
    S Offline
    Sergio
    wrote on last edited by
    #1

    Buenas,

    Describo mi situación:
    - Tengo en el MainWindow.ui un boton que al pulsarlo tengo que abrir el puerto serie para comunicarme con el arduino (el cual me envia datos de sensores), ademas esto lo tengo que mover a un hilo aparte para que este todo el rato leyendo del puerto serie.

    El problema que tengo es que no se como hacer para hacerlo. También tengo que guardar el dato que recibo en un vector para representarlo en una grafica en tiempo real.

    He intentado todo tipo de soluciones, pero no consigo llegar hasta la que me cumple con el proposito. Alguien me puede ayudar??

    (Nota: tengo dos clases, el mainwindow y comunications (com) que sera la clase que tengo la funcion de leer del puerto serie)

    Codigo:
    p = ui->puerto->currentText();
    b = ui->baudrate->currentText();
    da = ui->datasize->currentText();
    pa= ui->parity->currentText();

    //qDebug()<<p<<b<<da<<pa;
    
    com->setPortName(p);
    com->setBR(b);
    com->setData(da);
    com->setParity(pa);
    
    //qDebug()<<com->getName()<<com->getBR()<<com->getDa()<<com->getParity();
    bool open = com->openPort();
    qDebug()<<"Open: "<<open;
    
    if(open==true){
        ui->start->setEnabled(false);
        ui->close->setEnabled(true);
        op = "Serial opened...";
        temp = "<font color=\"#009933\">";
        temp = temp + "</font><font color=\"#009933\">" + op +"</font>";
        ui->textSerial->append(temp);
        
    }else{
        qDebug()<< com->SerialError();
    }
    

    Gracias por la ayuda.

    BrikinhosB 1 Reply Last reply
    0
    • S Sergio

      Buenas,

      Describo mi situación:
      - Tengo en el MainWindow.ui un boton que al pulsarlo tengo que abrir el puerto serie para comunicarme con el arduino (el cual me envia datos de sensores), ademas esto lo tengo que mover a un hilo aparte para que este todo el rato leyendo del puerto serie.

      El problema que tengo es que no se como hacer para hacerlo. También tengo que guardar el dato que recibo en un vector para representarlo en una grafica en tiempo real.

      He intentado todo tipo de soluciones, pero no consigo llegar hasta la que me cumple con el proposito. Alguien me puede ayudar??

      (Nota: tengo dos clases, el mainwindow y comunications (com) que sera la clase que tengo la funcion de leer del puerto serie)

      Codigo:
      p = ui->puerto->currentText();
      b = ui->baudrate->currentText();
      da = ui->datasize->currentText();
      pa= ui->parity->currentText();

      //qDebug()<<p<<b<<da<<pa;
      
      com->setPortName(p);
      com->setBR(b);
      com->setData(da);
      com->setParity(pa);
      
      //qDebug()<<com->getName()<<com->getBR()<<com->getDa()<<com->getParity();
      bool open = com->openPort();
      qDebug()<<"Open: "<<open;
      
      if(open==true){
          ui->start->setEnabled(false);
          ui->close->setEnabled(true);
          op = "Serial opened...";
          temp = "<font color=\"#009933\">";
          temp = temp + "</font><font color=\"#009933\">" + op +"</font>";
          ui->textSerial->append(temp);
          
      }else{
          qDebug()<< com->SerialError();
      }
      

      Gracias por la ayuda.

      BrikinhosB Offline
      BrikinhosB Offline
      Brikinhos
      wrote on last edited by
      #2

      @Sergio Para que al pulsar un botón ejecute una función abrirPuertoSerie() tienes que usar señales y slots. Las señales son gatillos que ejecutan un slot. En tu clase Comunicaciones tienes que tener un apartado que se llame slots, en el fichero .h, donde se declaran las funciones y variables. Ese slot, que será esa función, se activará cuando actives una señal concreta que hayas indicado, por ejemplo, botón tiene una señal que es pressed. Mira el tema sobre señales y slots, la idea es que en tu clase MainWindows tienes que tener una función algo que así: connect(ui->button, SIGNAL(pressed()), comunicaciones, SLOT(abrirPuertoSerie())); Y así se hace magia, cualquier duda me dices y te ayudo en lo que pueda, que tampoco soy un pro de Qt. Un saludo.

      1 Reply Last reply
      0
      • BrikinhosB Offline
        BrikinhosB Offline
        Brikinhos
        wrote on last edited by
        #3

        Si necesitas tutoriales de Qt tengo unos cuantos manuales, 2 en castellano y 3 en inglés, si eso me envías un correo a brikinhos@gmail.com

        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