У меня проблема при получении байтов из RS232 в QByteArray. Я подключил сигнал readread() для вызова метода serialport и внутри него. Я читаю байты с readAll() в QByteArray. Всякий раз, когда данные доступны, он перезаписывает QByteArray, но я хочу получить его все, а затем использовать данные, но теперь я не могу, потому что это по частям. Что делать?QSerialPort readyread() SIGNAL
0
A
ответ
1
Просто добавьте в массив. Вам также потребуется определенный критерий, чтобы определить, когда вы получили все данные, которые вы пожелаете. Это может быть, например, заданное количество байтов:
class Communicator {
int expect;
QSerialPort port;
QByteArray reply;
void processReply() {
...
}
public:
Communicator() {
QObject::connect(&port, &QIODevice::readyRead, [this]{
reply += port.readAll();
if (expect && reply.size() >= expect) {
processReply();
reply.clear();
expect = 0;
}
});
...
};