我想創建一個使用Qt和MercuryAPI(native-c)的RFID閱讀器線程。它有一個native-c線程,但它有問題。我決定寫一個我自己的。QThread自定義事件
到目前爲止,我有用自定義事件(TagReadEvent
)發送數據的線程。它植入下列qDebug錯誤:
QCoreApplication::removePostedEvent: Internal error: 0xbfdfed8 1001 is posted
我無法找到任何叫QCoreApplication::removePostedEvent
,但下降這個錯誤時postEventList.size() == 0
。
TagReadEvent:
class TagReadEvent : public QEvent
{
public:
TagReadEvent();
~TagReadEvent();
QList<TMR_TagData> tagData;
};
自定義事件處理程序:
void MainWindow::customEvent(QEvent *event)
{
if (event->type() == (QEvent::User + 1)) {
TagReadEvent *tagEvent = static_cast<TagReadEvent *>(event);
for (int i = 0; i < tagEvent->tagData.length(); ++i) {
TMR_TagData tagData = tagEvent->tagData.at(i);
char epcStr[128];
TMR_bytesToHex(tagData.epc, tagData.epcByteCount, epcStr);
qDebug() << epcStr;
}
}
return QMainWindow::customEvent(event);
}
灌裝和發送事件:
TagReadEvent event;
while (TMR_SUCCESS == TMR_hasMoreTags(&(mainWindow->reader))) {
TMR_TagReadData trd;
lastStatus = TMR_getNextTag(&(mainWindow->reader), &trd);
if (checkerr(tr("fetching tag")))
return;
event.tagData.append(trd.tag);
}
if (event.tagData.length() > 0)
QCoreApplication::postEvent(mainWindow,&event);