Реализовать событие 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 для ожидания доступных данных, но мы боремся с реализацией события, и у нас есть срок выполнения.
Любая помощь будет оценена.