Problema con QThread y QSerialport



  • 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.



  • @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.



  • 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


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.