我使用Ubuntu 12.04和Qt 4.8.3版本。 在Qt主窗口中,我設法打開我的設備,這部分代碼正在工作。 現在,當我打開設備後,如果存在卡片,我需要等待。這意味着我必須使用輪詢從卡中獲取數據。但是投票必須是無限循環。輪詢卡的到達和刪除。如何開始使用QT中的互斥鎖定線程進行輪詢?
示例針對每20毫秒到達一次卡的輪詢以及當檢測到卡時我需要每20毫秒切換一次卡輪詢的輪詢。因此,當檢測到卡片到達或移除時,我的應用程序會發出Qt事件信號,以便另一個Qt線程現在可以繼續讀取/寫入卡片。
我讀了關於QThread,互斥量鎖定等等,我有點困惑。 我有一個主窗口和一個工人類。在我的主窗口中,我編碼爲;
// Open a reader (from my SDK)
cReader.open
//If the reader is open use;
thread = new QThread();
worker = new Worker();
worker->moveToThread(thread);
connect(worker,SIGNAL(??????),SLOT(?????);
connect(worker,SIGNAL(?????),SLOT(?????);
.........
首先,我必須使用connect for SIGNAL/SLOT並啓動卡到達/刪除輪詢。如果有任何卡檢測到我有信號到另一個線程從卡讀取或寫入卡。
所以我不知道從哪裏開始或如何調用信號/插槽?我需要幫助來填補??????信號/時隙上方。
編輯:我還需要輪詢線程和卡處理線程共享的互斥鎖。這是因爲卡片輪詢命令會打開我的mifare會話。
任何幫助,請, 親切的問候,
在附註中,'QT'用於QuickTime。 'Qt'是你正在討論的框架。 –
如果你只是輪詢,你不需要*另一個線程。有一個(如果你需要非常確切的20毫秒,或者如果輪詢調用實際上需要幾毫秒),但你應該編寫你的代碼,以便它也可以單線程工作。因此,只需使用一個間隔爲20 ms的重複「QTimer」,並且每個定時器信號執行輪詢,將結果與先前的輪詢結果進行比較,並在發生變化時發出信號。 – hyde
至於如何使用Qt信號和插槽,您應該只是簡單地學習基本知識:http://doc.qt.io/qt-5/signalsandslots.html進行點對點介紹,如http:/例如/doc.qt.io/qt-5/qtwidgets-mainwindows-application-example.html。 – hyde