https://pastein.ru/t/IM

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


#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    port = new QSerialPort("COM1"); //Подключаемся к порту COM1
    port->setBaudRate(QSerialPort::Baud9600); //Установка скорости в 4800 бод
    port->setDataBits(QSerialPort::Data5); //Установка количества бит данных равное 5
    port->setStopBits(QSerialPort::OneStop); //Установка 1 стоп бита
    port->open(QSerialPort::ReadWrite); //Открыть для пересылки и получения данных
    transmitRowCounter = 0;
    recieveRowConuter = 0;

    ui->tableWidget->setColumnCount(3); // Указываем число колонок
    ui->tableWidget->setShowGrid(true); // Включаем сетку

    ui->tableWidget_2->setColumnCount(3); // Указываем число колонок
    ui->tableWidget_2->setShowGrid(true); // Включаем сетку

    ReaderThread *readerThread = new ReaderThread(this, port);
    connect(readerThread, &ReaderThread::readyRead, this, &MainWindow::on_readyRead);
    connect(readerThread, &ReaderThread::finished, readerThread, &QObject::deleteLater);
    readerThread->start();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_readyRead(char* result, int len)
{
    int i = recieveRowConuter;
    ui->tableWidget_2->insertRow(i);
    ui->tableWidget_2->setItem(i, 0, new QTableWidgetItem(result));
    ui->tableWidget_2->resizeColumnsToContents();
    recieveRowConuter++;
}

void MainWindow::on_pushButton_clicked()
{
    char *oneByte = "A";
    port->write(oneByte); //Посылаем
    if(!port->waitForBytesWritten(30000)) { //Ждем, пока пересылка завершится
        addTransmitRow(oneByte);
        qDebug() << "Error";
    }
    else {
        addTransmitRow(oneByte);
    }
    ui->lineEdit->clear();
}

void MainWindow::addTransmitRow(char *val)
{
    int i = transmitRowCounter;
    ui->tableWidget->insertRow(i);
    ui->tableWidget->setItem(i, 0, new QTableWidgetItem(val));
    ui->tableWidget->resizeColumnsToContents();
    transmitRowCounter++;
}