Отправка сигнала в QT

152
05 января 2020, 16:30

Столкнулся со следующей проблемой- при emit сигнала с параметром в виде QByteArray длины до 3-х байт программа вылетает с фразой unknown signal.

// Слот асинхронного получения данных
void UART_Manager_C::Receive_Async()
{
    // Считать данные
    QByteArray Answer = Receive();
    // Если длина данных больше нуля
    if (Answer.length() > 0)
    {
        // Отправить сигнал
        emit Data_Received(Answer);
    }
}

Небольшое пояснение- это фрагмент кода класса для работы с COM портом. Внешний объект коннектится к сигналу Data_Received, в методе Receive_Async же происходит асинхронное получение данных по сигналу readyRead от порта с последующей отправкой данных в случае, если они корректны (Проверка происходит в методе Receive).

Если длина Answer больше или равна 3 байтам, то emit проходит без проблем, в противном случае код вылетает на этих строчках в файле qbytearray.h по условию i >= 0 (i, чем бы он ни был, при вылете равен -2)

inline QByteRef QByteArray::operator[](int i)
{ Q_ASSERT(i >= 0); return QByteRef(*this, i); }

В поле Проблемы QT выводит следующее

:-1: ошибка: Возникло исключение: Exception at 0x6b78f704, code: 0xc0000602: , flags=0x0.

P.S. Работаю в QT Creator с QT версии 5.12. Компилятор- MinGW 64 bit

Answer 1

Проблема была во внешнем обрабатывающем слоте. В нем происходил выход за границы массива. Спасибо @Bogdan и @goldstar_labs за помощь в решении проблемы

READ ALSO
Как задать размер виджета в ячейке QTableWidget

Как задать размер виджета в ячейке QTableWidget

Помогите решить проблему

127
Обработка событий в OpenGL C++

Обработка событий в OpenGL C++

Хочу написать программу, которая будет строить треугольник СерпинскогоМне нужно получить координаты первого треугольника, но я не хочу...

138
Можно ли вставлять элементы в vector в цикле

Можно ли вставлять элементы в vector в цикле

Есть последовательность из чисел, надо перед каждым отрицательным вставить 0 Я записал начальную последовательность в vector и потом хотел...

111
Декомпрессор gzip на C++, библиотека zlib.h

Декомпрессор gzip на C++, библиотека zlib.h

Доброго времени суток!

153