2016-11-09 2 views
0

Ich erwäge, QTextEdit als Konsolen-ähnliches IO-Element (für serielle Daten) zu verwenden. Das Problem bei diesem Ansatz besteht darin, dass (Benutzer-) Eingabe und (Kommunikations-) Ausgabe gemischt sind und sie möglicherweise nicht synchron sind.QTextEdit für Eingang und Ausgang

Um neue Benutzereingaben zu erkennen, könnte es möglich sein, plainText bei bestimmten Eingabeereignissen zu speichern und zu vergleichen, z. wenn Enter/Return gedrückt wird.

Ein anderer Ansatz könnte darin bestehen, QTextEdit als Ansicht nur für separat verwaltete Eingabe- und Ausgabepuffer zu verwenden. Dies könnte auch das Problem potentiell asynchroner Daten vereinfachen (das Gerät sendet Zeichen, während der Benutzer tippt, in meinem Fall sehr unwahrscheinlich). Aber auch das Zusammenführen der beiden "Streams" durch den Zeitstempel mit einem Zeichen birgt ein Konfliktpotenzial.

Gibt es eine (einfache) Lösung oder sollte ich einfach separate und völlig unabhängige Eingabe-/Ausgabebereiche verwenden?

Antwort

1

Separate E/A-Bereiche sind der einfachste Weg, um fortzufahren, wenn Ihre Benutzeroberfläche befehlsgesteuert ist und die Eingabe zeilenorientiert ist.

Alternativ kann das entfernte Gerät das Echo ohne lokales Echo bereitstellen. Das entfernte Gerät wird dann die Zeichen zurückgeben, wenn es sinnvoll ist, eine kohärente Anzeige aufrechtzuerhalten.

Sie können auch einen Bearbeitungspuffer für lokale Leitungen anzeigen, um Benutzerfeedback bereitzustellen, falls das entfernte Echo verzögert oder nicht verfügbar war. Dieser Puffer dient nur der Rückkopplung und hat keinen Einfluss auf das andere Verhalten des Terminals. Alle Tastenanschläge würden sofort an das entfernte Gerät gesendet werden.

Verwandte Themen