QT -Schnittstelle Einfrieren Sie die Hintergrundaufgabe einC++

Programme in C++. Entwicklerforum
Anonymous
 QT -Schnittstelle Einfrieren Sie die Hintergrundaufgabe ein

Post by Anonymous »

Ich habe ein unterhaltsames Problem zu lösen. Ich verwende QT 5 für eines meiner Projekte zum Lesen von Informationen im Netzwerk. Ich habe Modbus -Geräte und -Mobents gelesen, aber das eigentliche Problem kommt, wenn das Netzwerk nicht verfügbar ist. Das Netzwerk wird in einem separaten Thread erfolgen oder das ist was ich denke. Hier ist ein Codebeispiel: < /p>

Code: Select all

class TwidoDevice : public QObject
{
Q_OBJECT
public:
explicit TwidoDevice
........ And some useful code
< /code>

Die Verwendung der (Hauptschnittstelle) Klasse im Fenster.cpp < /code> ist: < /p>

L1Thread = new QThread();
L1Thread->start();
L1TWD = new TwidoDevice(L1TWD_settings,
L1TWD_Name,
PercentRegisters,
TotalsRegisters,
db, 1);
L1TWD->moveToThread(L1Thread);
connect(this, SIGNAL(startReading()), L1TWD, SLOT(startFired()), Qt::DirectConnection);
< /code>

In diesem Code startfired () < /code> Lesen Sie die Geräte im Netzwerk.emit startReading()
Wenn dieser Code ausgeführt wird, friert die Schnittstelle ein, obwohl ich das L1TWD -Objekt in Qthread verschoben habe. < /p>

Wenn ich versuche, ihn mit dem integrierten Debugger in QTCreator zu debuggen, kann ich nicht verstehen, ob das Objekt bewegt wurde oder nicht und warum die Schnittstelle während des Netzwerkaufrufs eingefroren ist. < /p>

Hat jemand das gleiche Problem gestoßen und wie kann dies gelöst werden? < /p>

Vielen Dank, dass Sie Zeit damit verbracht haben, meine Frage zu lesen! < /p>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post