https://pastein.ru/t/PM

  скопируйте уникальную ссылку для отправки


#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtSerialPort>
#include <QThread>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    void addTransmitRow(char*);

private slots:
    void on_pushButton_clicked();
    void on_readyRead(char*, int);

private:
    Ui::MainWindow *ui;
    QSerialPort *port;
    int transmitRowCounter, recieveRowConuter;
};

class ReaderThread : public QThread
{
    Q_OBJECT
    QSerialPort *port;

public:
    ReaderThread(QObject *obj, QSerialPort *port) : QThread(obj), port(port) {}

    void run() override
    {
        char *result;
        int len;
        while (true) {
            if (port->bytesAvailable() > 0) { //Проверяем, что нам что-то пришло
                len = port->read(result, 50); //Читаем максимум 50 байт икладем их в buffer
                qDebug() << "Readed " << result;
                emit readyRead(result, len);
            }
        }
    }
signals:
    void readyRead(char *result, int len);
};

#endif // MAINWINDOW_H