Forum: PC-Programmierung Synchrone Kommunikation in Event-basiertem System (Qt GUI)


von Niko L. (Gast)


Lesenswert?

Ich suche einen Ansatz, ein synchrones Protokoll (darunter verstehe ich 
weitgehend abwechselnden Datenaustausch, wie bei einem zivilisierten 
Gespräch) zu realisieren, unter Nutzung der Event-loop, d.h. nach 
Möglichkeit kein Warten bzw. Blocken.
Das ginge zwar m.W. auch, z.B. als separater Thread, der dann 
entsprechend angehalten wird bzw. im Polling hängt, aber ich glaube, das 
ist nicht der richtige Weg.

Aber was ist der richtige Weg?
Eine State-Machine, die nach Senden einen Timer setzt, und dann bei 
Empfang neuer Daten oder Ablauf des Timers weitermacht? Mehr fällt mir 
dazu leider nicht ein. Wie könnte eine Fehlerbehandlung aussehen, 
abgesehen vom Timeout, also z.B. bei falscher Antwort oder Fehlschlagen 
des Sendens (Verbindung getrennt)?

von Jean Player (Gast)


Lesenswert?

Hi,
da deine Frage etwas schwammig formuliert ist und ich nicht abschätzen 
kann, was du überhaupt vor hast schmeiss ich mal nen paar Begriffe in 
den Raum.

--> signal & slots
--> QWaitCondition & QMutex | QMutexLocker| QSemaphore
--> postEvent
---> .....

Erzähl mal genauer was du vor hast, dann kann man dir sicher besser 
helfen.
Gruß

von Niko L. (Gast)


Lesenswert?

Hallo und danke für die Stichworte. Ja, ich habe es allgemein 
formuliert. Prozedural mit Blockieren würde es vielleicht so aussehen:

1: "Fahre nach Panama"
..
2: "Ok, bin da"
1: "Stell dich auf den Kopf und lache"
...
2: "Nein, mache ich nicht"


Schreiben
Schreiben OK?
Nein -> Fehlerflag

Fehlerflag?
Nein -> Warte auf Antwort

Timeout?
Nein -> Lesen
Ja -> Fehlerflag

Fehler beim Lesen?
Ja -> Fehlerflag
Nein ->


Einfach, nur die Fehlerbehandlung ist Schreibarbeit.

Anhand deiner Stichworte nehme ich an, dass Senden und Empfangen als 
separate Threads vorstellbar wären, die sich gegenseitig steuern?

von Jean Player (Gast)


Lesenswert?

-.-
1.) Netiquette
2.) Beschreibe dein Problem, was willst du machen ???
    und zwar etwas genauer bitte -.-
3.) poste deinen derzeitigen Code !!! und bitte wieder Netiquette, wenn 
langer Quellcode, als Anhang, ansonsten mit den Formatierungen hier.
4.) Warum willst du es mit QT machen ???

Wenn du Diese, ich sage mal leichten Anforderungen erfüllt hast,
helfe Ich Dir gerne :-)

Gruss Player.

von Jean Player (Gast)


Lesenswert?

Niko L. schrieb:
> Anhand deiner Stichworte nehme ich an, dass Senden und Empfangen als
> separate Threads vorstellbar wären, die sich gegenseitig steuern?

Ja das kann man machen mittels QWaitCondition und QMutex.

Gn8

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Wie wärs mit 2 von den
QQueue http://doc.qt.digia.com/qt/qqueue.html ?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.