Реализовать событие Qt для FTDI D2XX для получения данных

У нас возникли проблемы с недавно разработанным приложением, которое должно периодически проверять данные на различных устройствах в сети RS-485. Сеть RS-485 взаимодействует с ПК через специальный адаптер, в котором FTDI FT230X реализован в виде последовательного /USB-чипа.

До сих пор мы делали это, я знаю, ужасно, как это:

void CommThread::run()
{
    m_cp->SendMessage(m_pMsg);
    result = m_cp->GetAnswer(m_node);
    if (m_wfAnswer && (result == ACK)) {
        result = m_cp->GetMessage(m_pMsg, m_node);
        if (result == ERR_MSG_NONE) {
            m_cp->SendAnswer(ACK, m_node);
            emit ReplyCasMessageReady(m_threadID, 0);
        }
        else {
            m_cp->SendAnswer(NAK, m_node);
        }
    }
}

GetAnswer() а также GetMessage() оба постоянно проверяют доступные данные, как это:

do {
        if (m_usbDev->WaitForData(TMR)) {
            data = m_usbDev->GetByte();
            Process Data...
            .
            .
        }
        else {
            cnIntent--;
        }
    } while(cnIntent);

Вместо этой уродливой и ошибочной реализации мы хотели бы использовать FT_SetEventNotification для ожидания доступных данных, но мы боремся с реализацией события, и у нас есть срок выполнения.

Любая помощь будет оценена.

0 ответов

Другие вопросы по тегам