Jetzt habe ich eine GUI dazu gebastelt und die Kommunikation in einen separaten Thread ausgelagert. Ich leite von QThread ab und überschreibe die run() Methode. Dort verbinde ich mich mit dem Konverter mittels
Code: Alles auswählen
pTcpSocket->connectToHost("192.168.0.3", 10001);Code: Alles auswählen
QAbstractSocket::SocketState state = pTcpSocket->state();Und da bleibt er auch. Das connected() Signal wird nie ausgelöst.
Folgendes habe ich schon ausprobiert, was aber nicht geholfen hat:
- Den Socket als Membervariable anlegen, statt einer lokalen Variable in run().
- Das connect()
Code: Alles auswählen
connect( &tcpSocket, SIGNAL(connected()), this, SLOT(conEstablishedSlot()));Da in run() ein neuer Thread erzeugt wird, habe ich auch probiert, statt dem this Pointer einen Pointer auf die Instanz des abgeleiteten Threads zu übergeben. Trotzdem kein Signal.
- Connects mit/ohne Qt::DirectConnection als fünften Parameter.
Das einzige was funktioniert ist, wenn ich in run() die Funktion exec() aufrufe.
Aber wo soll ich dann meine Programmlogik einbauen?
(Es soll alle x Sekunden ein String versendet und einer (über das readyRead() Signal) empfangen werden)
Vielleicht ist auch mein Design verbesserungswürdig.
Wenn jemand eine Idee hat, alles ist herzlich willkommen.