Auf dieser Seite

QSerialPort Class

Bietet Funktionen für den Zugriff auf serielle Schnittstellen. Mehr...

Kopfzeile: #include <QSerialPort>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialPort)
target_link_libraries(mytarget PRIVATE Qt6::SerialPort)
qmake: QT += serialport
Erbt von: QIODevice

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

Öffentliche Typen

enum BaudRate { Baud1200, Baud2400, Baud4800, Baud9600, Baud19200, …, Baud115200 }
enum DataBits { Data5, Data6, Data7, Data8 }
enum Direction { Input, Output, AllDirections }
flags Directions
enum FlowControl { NoFlowControl, HardwareControl, SoftwareControl }
enum Parity { NoParity, EvenParity, OddParity, SpaceParity, MarkParity }
enum PinoutSignal { NoSignal, DataTerminalReadySignal, DataCarrierDetectSignal, DataSetReadySignal, RingIndicatorSignal, …, SecondaryReceivedDataSignal }
flags PinoutSignals
enum SerialPortError { NoError, DeviceNotFoundError, PermissionError, OpenError, NotOpenError, …, UnknownError }
enum StopBits { OneStop, OneAndHalfStop, TwoStop }

Eigenschaften

Öffentliche Funktionen

QSerialPort(QObject *parent = nullptr)
QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)
QSerialPort(const QString &name, QObject *parent = nullptr)
virtual ~QSerialPort()
qint32 baudRate(QSerialPort::Directions directions = AllDirections) const
QBindable<QSerialPort::DataBits> bindableDataBits()
QBindable<QSerialPort::SerialPortError> bindableError() const
QBindable<QSerialPort::FlowControl> bindableFlowControl()
QBindable<bool> bindableIsBreakEnabled()
QBindable<QSerialPort::Parity> bindableParity()
QBindable<QSerialPort::StopBits> bindableStopBits()
bool clear(QSerialPort::Directions directions = AllDirections)
void clearError()
QSerialPort::DataBits dataBits() const
QSerialPort::SerialPortError error() const
QSerialPort::FlowControl flowControl() const
bool flush()
QSerialPort::Handle handle() const
bool isBreakEnabled() const
bool isDataTerminalReady()
bool isRequestToSend()
QSerialPort::Parity parity() const
QSerialPort::PinoutSignals pinoutSignals()
QString portName() const
qint64 readBufferSize() const
bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections)
bool setBreakEnabled(bool set = true)
bool setDataBits(QSerialPort::DataBits dataBits)
bool setDataTerminalReady(bool set)
bool setFlowControl(QSerialPort::FlowControl flowControl)
bool setParity(QSerialPort::Parity parity)
void setPort(const QSerialPortInfo &serialPortInfo)
void setPortName(const QString &name)
void setReadBufferSize(qint64 size)
bool setRequestToSend(bool set)
void setSettingsRestoredOnClose(bool restore)
bool setStopBits(QSerialPort::StopBits stopBits)
(since 6.10) void setWriteBufferSize(qint64 size)
bool settingsRestoredOnClose() const
QSerialPort::StopBits stopBits() const
(since 6.10) qint64 writeBufferSize() const

Neu implementierte öffentliche Funktionen

virtual qint64 bytesAvailable() const override
virtual qint64 bytesToWrite() const override
virtual bool canReadLine() const override
virtual void close() override
virtual bool isSequential() const override
virtual bool open(QIODeviceBase::OpenMode mode) override
virtual bool waitForBytesWritten(int msecs = 30000) override
virtual bool waitForReadyRead(int msecs = 30000) override

Signale

void baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)
void breakEnabledChanged(bool set)
void dataBitsChanged(QSerialPort::DataBits dataBits)
void dataTerminalReadyChanged(bool set)
void errorOccurred(QSerialPort::SerialPortError error)
void flowControlChanged(QSerialPort::FlowControl flow)
void parityChanged(QSerialPort::Parity parity)
void requestToSendChanged(bool set)
(since 6.9) void settingsRestoredOnCloseChanged(bool restore)
void stopBitsChanged(QSerialPort::StopBits stopBits)

Neu implementierte geschützte Funktionen

virtual qint64 readData(char *data, qint64 maxSize) override
virtual qint64 readLineData(char *data, qint64 maxSize) override
virtual qint64 writeData(const char *data, qint64 maxSize) override

Ausführliche Beschreibung

Informationen zu den verfügbaren seriellen Schnittstellen erhalten Sie mithilfe der Hilfsklasse „ QSerialPortInfo “, die eine Aufzählung aller seriellen Schnittstellen im System ermöglicht. Dies ist nützlich, um den korrekten Namen der seriellen Schnittstelle zu ermitteln, die Sie verwenden möchten. Sie können ein Objekt der Hilfsklasse als Argument an die Methoden „ setPort()“ oder „ setPortName()“ übergeben, um das gewünschte serielle Gerät zuzuweisen.

Nachdem Sie den Port festgelegt haben, können Sie ihn mithilfe der Methode „ open()“ im schreibgeschützten (r/o), schreibgeschützten (w/o) oder Lese-/Schreibmodus (r/w) öffnen.

Hinweis: Der serielle Port wird immer mit exklusivem Zugriff geöffnet (das heißt, kein anderer Prozess oder Thread kann auf einen bereits geöffneten seriellen Port zugreifen).

Verwenden Sie die Methode „ close()“, um den Port zu schließen und die E/A-Vorgänge abzubrechen.

Nach dem erfolgreichen Öffnen versucht QSerialPort, die aktuelle Konfiguration des Ports zu ermitteln, und initialisiert sich selbst. Sie können den Port mithilfe der Methoden „ setBaudRate()“, „ setDataBits()“, „ setParity()“, „ setStopBits()“ und „ setFlowControl()“ auf die gewünschten Einstellungen umkonfigurieren.

Es gibt einige Eigenschaften, mit denen die Pin-Signale verwaltet werden können, nämlich: QSerialPort::dataTerminalReady und QSerialPort::requestToSend. Es ist auch möglich, die Methode pinoutSignals() zu verwenden, um die aktuell eingestellten Pin-Signale abzufragen.

Sobald Sie wissen, dass die Ports zum Lesen oder Schreiben bereit sind, können Sie die Methoden „ read()“ oder „ write()“ verwenden. Alternativ können auch die Komfortmethoden ` readLine()` und ` readAll()` aufgerufen werden. Wenn nicht alle Daten auf einmal gelesen werden, stehen die restlichen Daten später zur Verfügung, da neu eingehende Daten an den internen Lesepuffer des `QSerialPort` angehängt werden. Sie können die Größe des Lesepuffers mit ` setReadBufferSize()` begrenzen.

QSerialPort stellt eine Reihe von Funktionen bereit, die den aufrufenden Thread anhalten, bis bestimmte Signale ausgegeben werden. Diese Funktionen können zur Implementierung blockierender serieller Schnittstellen verwendet werden:

  • waitForReadyRead() blockiert Aufrufe, bis neue Daten zum Lesen verfügbar sind.
  • waitForBytesWritten() blockiert Aufrufe, bis eine Datenladung an den seriellen Port geschrieben wurde.

Siehe das folgende Beispiel:

qint64 numReadTotal = 0;
char buffer[50];

for (;;) {
    const qint64 numRead  = serial.read(buffer, 50);

    // Do whatever with the array

    numReadTotal += numRead;
    if (numRead == 0 && !serial.waitForReadyRead())
        break;
}

Wenn „ waitForReadyRead()“ den Wert „ false “ zurückgibt, wurde die Verbindung geschlossen oder es ist ein Fehler aufgetreten.

Tritt zu irgendeinem Zeitpunkt ein Fehler auf, sendet QSerialPort das Signal „ errorOccurred()“ aus. Sie können auch „ error()“ aufrufen, um den Typ des zuletzt aufgetretenen Fehlers zu ermitteln.

Die Programmierung mit einem blockierenden seriellen Port unterscheidet sich grundlegend von der Programmierung mit einem nicht-blockierenden seriellen Port. Ein blockierender serieller Port erfordert keine Ereignisschleife und führt in der Regel zu einfacherem Code. In einer GUI-Anwendung sollte ein blockierender serieller Port jedoch nur in Nicht-GUI-Threads verwendet werden, um ein Einfrieren der Benutzeroberfläche zu vermeiden.

Weitere Einzelheiten zu diesen Ansätzen finden Sie in den Beispielanwendungen.

Die Klasse `QSerialPort` kann auch mit den Stream-Operatoren (Operator `<<()` und Operator `>>()`) von ` QTextStream ` und ` QDataStream` verwendet werden. Dabei ist jedoch ein Punkt zu beachten: Stellen Sie sicher, dass genügend Daten verfügbar sind, bevor Sie versuchen, mit dem überladenen Operator `>>()` Daten zu lesen.

Siehe auch QSerialPortInfo.

Dokumentation zu Mitgliedstypen

enum QSerialPort::BaudRate

Diese Enumeration beschreibt die Baudrate, mit der das Kommunikationsgerät arbeitet.

Hinweis: In dieser Enumeration sindnur die gängigsten Standard-Baudraten aufgeführt.

KonstanteWertBeschreibung
QSerialPort::Baud120012001200 Baud.
QSerialPort::Baud240024002400 Baud.
QSerialPort::Baud480048004800 Baud.
QSerialPort::Baud960096009600 Baud.
QSerialPort::Baud192001920019.200 Baud.
QSerialPort::Baud384003840038.400 Baud.
QSerialPort::Baud576005760057.600 Baud.
QSerialPort::Baud115200115200115.200 Baud.

Siehe auch QSerialPort::baudRate.

enum QSerialPort::DataBits

Diese Enumeration beschreibt die Anzahl der verwendeten Datenbits.

KonstanteWertBeschreibung
QSerialPort::Data55Die Anzahl der Datenbits pro Zeichen beträgt 5. Diese Enumeration wird für den Baudot-Code verwendet. Sie ist im Allgemeinen nur bei älteren Geräten wie Fernschreibern von Bedeutung.
QSerialPort::Data66Die Anzahl der Datenbits pro Zeichen beträgt 6. Diese Einstellung wird selten verwendet.
QSerialPort::Data77Die Anzahl der Datenbits pro Zeichen beträgt 7. Dieser Wert wird für echtes ASCII verwendet. Er ist im Allgemeinen nur bei älteren Geräten wie Fernschreibern sinnvoll.
QSerialPort::Data88Die Anzahl der Datenbits pro Zeichen beträgt 8. Diese wird für die meisten Datenarten verwendet, da diese Größe der Größe eines Bytes entspricht. In neueren Anwendungen ist sie nahezu universell verbreitet.

Siehe auch QSerialPort::dataBits.

enum QSerialPort::Direction
flags QSerialPort::Directions

Diese Aufzählung beschreibt die möglichen Richtungen der Datenübertragung.

Hinweis: Diese Enumeration wird auf einigen Betriebssystemen (z. B. POSIX-ähnlichen) verwendet, um die Baudrate des Geräts für jede Richtung separat einzustellen.

KonstanteWertBeschreibung
QSerialPort::Input1Eingaberichtung.
QSerialPort::Output2Ausgangsrichtung.
QSerialPort::AllDirectionsInput | OutputGleichzeitig in zwei Richtungen.

Der Typ „Directions“ ist eine Typdefinition für „QFlags<Direction>“. Er speichert eine ODER-Kombination von „Direction“-Werten.

enum QSerialPort::FlowControl

Diese Enumeration beschreibt die verwendete Flusssteuerung.

KonstanteWertBeschreibung
QSerialPort::NoFlowControl0Keine Flusssteuerung.
QSerialPort::HardwareControl1Hardware-Flusskontrolle (RTS/CTS).
QSerialPort::SoftwareControl2Software-Flusskontrolle (XON/XOFF).

Siehe auch „ QSerialPort::flowControl “.

enum QSerialPort::Parity

Diese Enumeration beschreibt das verwendete Paritätsschema.

KonstanteWertBeschreibung
QSerialPort::NoParity0Es wird kein Paritätsbit gesendet. Dies ist die gängigste Paritätseinstellung. Die Fehlererkennung erfolgt über das Kommunikationsprotokoll.
QSerialPort::EvenParity2Die Anzahl der 1-Bits in jedem Zeichen, einschließlich des Paritätsbits, ist immer gerade.
QSerialPort::OddParity3Die Anzahl der 1-Bits in jedem Zeichen, einschließlich des Paritätsbits, ist immer ungerade. Dadurch wird sichergestellt, dass in jedem Zeichen mindestens ein Zustandswechsel stattfindet.
QSerialPort::SpaceParity4Leerzeichen-Parität. Das Paritätsbit wird im Leerzeichen-Signalzustand gesendet. Es liefert keine Informationen zur Fehlererkennung.
QSerialPort::MarkParity5Mark-Parität. Das Paritätsbit wird immer auf den Mark-Signalzustand (logische 1) gesetzt. Es liefert keine Informationen zur Fehlererkennung.

Siehe auch „ QSerialPort::parity “.

enum QSerialPort::PinoutSignal
flags QSerialPort::PinoutSignals

Diese Enumeration beschreibt die möglichen Signale der RS-232-Pinbelegung.

KonstanteWertBeschreibung
QSerialPort::NoSignal0x00Keine Leitung aktiv
QSerialPort::DataTerminalReadySignal0x04DTR (Data Terminal Ready).
QSerialPort::DataCarrierDetectSignal0x08DCD (Data Carrier Detect).
QSerialPort::DataSetReadySignal0x10DSR (Data Set Ready).
QSerialPort::RingIndicatorSignal0x20RNG (Klingelanzeige).
QSerialPort::RequestToSendSignal0x40RTS (Sendeanforderung).
QSerialPort::ClearToSendSignal0x80CTS (Sendefreigabe).
QSerialPort::SecondaryTransmittedDataSignal0x100STD (Sekundär gesendete Daten).
QSerialPort::SecondaryReceivedDataSignal0x200SRD (Sekundär empfangene Daten).

Der Typ „PinoutSignals“ ist ein „typedef“ für „QFlags<PinoutSignal>“. Er speichert eine ODER-Kombination von „PinoutSignal“-Werten.

Siehe auch „ pinoutSignals()“, „ QSerialPort::dataTerminalReady “ und „ QSerialPort::requestToSend “.

enum QSerialPort::SerialPortError

Diese Enumeration beschreibt die Fehler, die in der Eigenschaft „ QSerialPort::error “ enthalten sein können.

KonstanteWertBeschreibung
QSerialPort::NoError0Es ist kein Fehler aufgetreten.
QSerialPort::DeviceNotFoundError1Beim Versuch, ein nicht vorhandenes Gerät zu öffnen, ist ein Fehler aufgetreten.
QSerialPort::PermissionError2Beim Versuch, ein bereits von einem anderen Prozess geöffnetes Gerät zu öffnen, oder beim Versuch, ein Gerät zu öffnen, für das der Benutzer nicht über ausreichende Berechtigungen und Anmeldedaten verfügt, ist ein Fehler aufgetreten.
QSerialPort::OpenError3Beim Versuch, ein in diesem Objekt bereits geöffnetes Gerät zu öffnen, ist ein Fehler aufgetreten.
QSerialPort::NotOpenError10Dieser Fehler tritt auf, wenn eine Operation ausgeführt wird, die nur erfolgreich durchgeführt werden kann, wenn das Gerät geöffnet ist. Dieser Wert wurde in „ QtSerialPort “ 5.2 eingeführt.
QSerialPort::WriteError4Beim Schreiben der Daten ist ein E/A-Fehler aufgetreten.
QSerialPort::ReadError5Beim Lesen der Daten ist ein E/A-Fehler aufgetreten.
QSerialPort::ResourceError6Ein E/A-Fehler ist aufgetreten, als eine Ressource nicht mehr verfügbar wurde, z. B. wenn das Gerät unerwartet aus dem System entfernt wurde.
QSerialPort::UnsupportedOperationError7Die angeforderte Geräteoperation wird vom laufenden Betriebssystem nicht unterstützt oder ist dort untersagt.
QSerialPort::TimeoutError9Es ist ein Timeout-Fehler aufgetreten. Dieser Wert wurde in QtSerialPort 5.2 eingeführt.
QSerialPort::UnknownError8Es ist ein nicht identifizierter Fehler aufgetreten.

Siehe auch „ QSerialPort::error “.

enum QSerialPort::StopBits

Diese Enumeration beschreibt die Anzahl der verwendeten Stoppbits.

KonstanteWertBeschreibung
QSerialPort::OneStop11 Stoppbit.
QSerialPort::OneAndHalfStop31,5 Stoppbits. Dies gilt nur für die Windows-Plattform.
QSerialPort::TwoStop22 Stoppbits.

Siehe auch QSerialPort::stopBits.

Dokumentation zu den Eigenschaften

baudRate : qint32

Diese Eigenschaft enthält die Datenübertragungsrate für die gewünschte Richtung

Wenn die Einstellung erfolgreich ist oder vor dem Öffnen des Ports vorgenommen wurde, wird „ true “ zurückgegeben; andernfalls wird „ false “ zurückgegeben und ein Fehlercode gesetzt, der durch Abrufen des Werts der Eigenschaft „ QSerialPort::error “ abgerufen werden kann. Um die Baudrate festzulegen, verwenden Sie die Aufzählung „ QSerialPort::BaudRate “ oder einen beliebigen positiven qint32-Wert.

Hinweis: Wenn die Einstellung vor dem Öffnen des Ports vorgenommen wird, erfolgt die eigentliche Konfiguration des seriellen Ports automatisch in der Methode „ QSerialPort::open()“, unmittelbar nachdem das Öffnen des Ports erfolgreich war.

Warnung: Das Setzen des Flags „ AllDirections “ wird auf allen Plattformen unterstützt. Windows unterstützt nur diesen Modus.

Warnung: Unter Windowswird in beiden Richtungen die gleiche Baudratezurückgegeben .

Der Standardwert ist Baud9600, d. h. 9600 Bit pro Sekunde.

Zugriffsfunktionen:

qint32 baudRate(QSerialPort::Directions directions = AllDirections) const
bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections)

Benachrichtigungssignal:

void baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)

[bindable] breakEnabled : bool

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält den Zustand der Übertragungsleitung im Fall eines Bruchs

Gibt bei Erfolg „ true “ zurück, andernfalls „ false “. Wenn das Flag auf „ true “ gesetzt ist, befindet sich die Übertragungsleitung im Unterbrechungszustand; andernfalls im Nicht-Unterbrechungszustand.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, diese Eigenschaft zu setzen oder abzurufen; andernfalls wird „ false “ zurückgegeben und der Fehlercode „ NotOpenError “ gesetzt. Dies ist im Gegensatz zu den üblichen Qt-Eigenschaftseinstellungen einer Klasse etwas ungewöhnlich. Es handelt sich jedoch um einen Sonderfall, da die Eigenschaft durch die Interaktion mit dem Kernel und der Hardware gesetzt wird. Daher lassen sich die beiden Szenarien nicht vollständig miteinander vergleichen.

Zugriffsfunktionen:

bool isBreakEnabled() const
bool setBreakEnabled(bool set = true)

Notifier-Signal:

void breakEnabledChanged(bool set)

[bindable] dataBits : DataBits

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält die Datenbits in einem Frame

Wenn die Einstellung erfolgreich ist oder vor dem Öffnen des Ports festgelegt wurde, wird „ true “ zurückgegeben; andernfalls wird „ false “ zurückgegeben und ein Fehlercode gesetzt, der durch Abrufen des Werts der Eigenschaft „ QSerialPort::error “ abgerufen werden kann.

Hinweis: Wird die Einstellung vor dem Öffnen des Ports vorgenommen, erfolgt die eigentliche Konfiguration des seriellen Ports automatisch in der Methode ` QSerialPort::open()` unmittelbar nach dem erfolgreichen Öffnen des Ports.

Der Standardwert ist „Data8“, d. h. 8 Datenbits.

Zugriffsfunktionen:

QSerialPort::DataBits dataBits() const
bool setDataBits(QSerialPort::DataBits dataBits)

Benachrichtigungssignal:

void dataBitsChanged(QSerialPort::DataBits dataBits)

dataTerminalReady : bool

Diese Eigenschaft enthält den Zustand (hoch oder niedrig) des Leitungssignals DTR

Gibt bei Erfolg „ true “ zurück, andernfalls „ false “. Ist das Flag „ true “ gesetzt, wird das DTR-Signal auf „High“ gesetzt; andernfalls auf „Low“.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, diese Eigenschaft zu setzen oder abzurufen; andernfalls wird „ false “ zurückgegeben und der Fehlercode auf „ NotOpenError “ gesetzt.

Zugriffsfunktionen:

bool isDataTerminalReady()
bool setDataTerminalReady(bool set)

Benachrichtigungssignal:

void dataTerminalReadyChanged(bool set)

Siehe auch „ pinoutSignals()“.

[bindable read-only] error : SerialPortError

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält den Fehlerstatus des seriellen Ports

Der Status des E/A-Geräts gibt einen Fehlercode zurück. Wenn beispielsweise „ open()“ den Wert „ false “ zurückgibt oder eine Lese-/Schreiboperation den Wert „ -1 “ zurückgibt, kann diese Eigenschaft verwendet werden, um den Grund für das Scheitern der Operation zu ermitteln.

Der Fehlercode wird nach einem Aufruf von `clearError()` auf den Standardwert ` QSerialPort::NoError ` gesetzt

Zugriffsfunktionen:

QSerialPort::SerialPortError error() const
void clearError()

Notifier-Signal:

void errorOccurred(QSerialPort::SerialPortError error)

[bindable] flowControl : FlowControl

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält den gewünschten Flusssteuerungsmodus

Wenn die Einstellung erfolgreich ist oder vor dem Öffnen des Ports vorgenommen wurde, wird „ true “ zurückgegeben; andernfalls wird „ false “ zurückgegeben und ein Fehlercode gesetzt, der durch Abrufen des Werts der Eigenschaft „ QSerialPort::error “ abgerufen werden kann.

Hinweis: Wird die Einstellung vor dem Öffnen des Ports vorgenommen, erfolgt die eigentliche Konfiguration des seriellen Ports automatisch in der Methode „ QSerialPort::open()“, unmittelbar nachdem das Öffnen des Ports erfolgreich war.

Der Standardwert ist „ NoFlowControl “, d. h. keine Flusssteuerung.

Zugriffsfunktionen:

QSerialPort::FlowControl flowControl() const
bool setFlowControl(QSerialPort::FlowControl flowControl)

Benachrichtigungssignal:

void flowControlChanged(QSerialPort::FlowControl flow)

[bindable] parity : Parity

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält den Modus für die Paritätsprüfung

Wenn die Einstellung erfolgreich ist oder vor dem Öffnen des Ports vorgenommen wurde, wird „ true “ zurückgegeben; andernfalls wird „ false “ zurückgegeben und ein Fehlercode gesetzt, der durch Abrufen des Werts der Eigenschaft „ QSerialPort::error “ abgerufen werden kann.

Hinweis: Wird die Einstellung vor dem Öffnen des Ports vorgenommen, erfolgt die eigentliche Konfiguration des seriellen Ports automatisch in der Methode ` QSerialPort::open()` unmittelbar nachdem das Öffnen des Ports erfolgreich war.

Der Standardwert ist ` NoParity`, d. h. keine Parität.

Warnung: Einige UNIX-Betriebssysteme (z. B. macOS) unterstützen das CMSPAR-Flag nicht. Auf solchen Systemen wird die Einstellung „ Mark or Space “ für die Parität nicht unterstützt.

Zugriffsfunktionen:

QSerialPort::Parity parity() const
bool setParity(QSerialPort::Parity parity)

Notifier-Signal:

void parityChanged(QSerialPort::Parity parity)

requestToSend : bool

Diese Eigenschaft enthält den Zustand (hoch oder niedrig) des Leitungssignals RTS

Gibt bei Erfolg „ true “ zurück, andernfalls „ false “. Wenn das Flag „ true “ gesetzt ist, wird das RTS-Signal auf „High“ gesetzt; andernfalls auf „Low“.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, diese Eigenschaft zu setzen oder abzurufen; andernfalls wird „ false “ zurückgegeben und der Fehlercode auf „ NotOpenError “ gesetzt.

Hinweis: Ein Versuch, das RTS-Signal im Modus „ HardwareControl “ zu steuern, schlägt mit dem Fehlercode „ UnsupportedOperationError “ fehl, da das Signal automatisch vom Treiber gesteuert wird.

Zugriffsfunktionen:

bool isRequestToSend()
bool setRequestToSend(bool set)

Benachrichtigungssignal:

void requestToSendChanged(bool set)

Siehe auch „ pinoutSignals()“.

[since 6.9] settingsRestoredOnClose : bool

Diese Eigenschaft legt fest, ob die Portparameter beim Schließen wiederhergestellt werden sollen oder nicht

Nachdem der Port geöffnet wurde, speichert die Klasse ihre Parameter im Cache, bevor die vom Benutzer definierten Parameter angewendet werden.

Wenn die Eigenschaft auf „ true “ gesetzt ist, versucht der serielle Port, die zwischengespeicherten Parameter vor dem Schließen des Ports wiederherzustellen; andernfalls werden die zwischengespeicherten Parameter verworfen.

Der Standardwert ist „ true “.

Hinweis: Diese Eigenschaft hat auf einigen Betriebssystemen möglicherweise keine Auswirkung. Beispielsweise scheint macOS beim Schließen des Ports stets die Standard-Einstellungen des seriellen Ports wiederherzustellen.

Diese Aufzählung wurde in Qt 6.9 eingeführt.

Zugriffsfunktionen:

bool settingsRestoredOnClose() const
void setSettingsRestoredOnClose(bool restore)

Notifier-Signal:

void settingsRestoredOnCloseChanged(bool restore)

[bindable] stopBits : StopBits

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält die Anzahl der Stoppbits in einem Frame

Wenn die Einstellung erfolgreich ist oder vor dem Öffnen des Ports vorgenommen wurde, wird „ true “ zurückgegeben; andernfalls wird „ false “ zurückgegeben und ein Fehlercode gesetzt, der durch Abrufen des Werts der Eigenschaft „ QSerialPort::error “ abgerufen werden kann.

Hinweis: Wird die Einstellung vor dem Öffnen des Ports vorgenommen, erfolgt die eigentliche Konfiguration des seriellen Ports automatisch in der Methode ` QSerialPort::open()` unmittelbar nach dem erfolgreichen Öffnen des Ports.

Der Standardwert ist „ OneStop “, d. h. 1 Stoppbit.

Zugriffsfunktionen:

QSerialPort::StopBits stopBits() const
bool setStopBits(QSerialPort::StopBits stopBits)

Benachrichtigungssignal:

void stopBitsChanged(QSerialPort::StopBits stopBits)

Dokumentation der Mitgliedsfunktionen

[explicit] QSerialPort::QSerialPort(QObject *parent = nullptr)

Erstellt ein neues serielles Port-Objekt mit dem angegebenen „ parent “.

[explicit] QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)

Erstellt ein neues Objekt für eine serielle Schnittstelle mit dem angegebenen „ parent “, um die serielle Schnittstelle mit der angegebenen Hilfsklasse „ serialPortInfo “ darzustellen.

[explicit] QSerialPort::QSerialPort(const QString &name, QObject *parent = nullptr)

Erstellt ein neues Objekt für eine serielle Schnittstelle mit dem angegebenen „ parent “, um die serielle Schnittstelle mit dem angegebenen „ name “ darzustellen.

Der Name sollte ein bestimmtes Format haben; siehe die Methode ` setPort()`.

[virtual noexcept] QSerialPort::~QSerialPort()

Schließt gegebenenfalls die serielle Schnittstelle und löscht anschließend das Objekt.

[signal] void QSerialPort::baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)

Dieses Signal wird ausgegeben, nachdem die Baudrate geändert wurde. Die neue Baudrate wird als „ baudRate “ und die Richtung als „ directions “ übergeben.

Hinweis: Benachrichtigungssignal für die Eigenschaft „ baudRate “.

Siehe auch „ QSerialPort::baudRate “.

[override virtual] qint64 QSerialPort::bytesAvailable() const

Implementiert neu: ` QIODevice::bytesAvailable()` const.

Gibt die Anzahl der eingehenden Bytes zurück, die darauf warten, gelesen zu werden.

Siehe auch „ bytesToWrite()“ und „ read()“.

[override virtual] qint64 QSerialPort::bytesToWrite() const

Implementiert: ` QIODevice::bytesToWrite()` const.

Gibt die Anzahl der Bytes zurück, die auf das Schreiben warten. Die Bytes werden geschrieben, wenn die Kontrolle an die Ereignisschleife zurückgegeben wird oder wenn „ flush()“ aufgerufen wird.

Siehe auch ` bytesAvailable()` und ` flush()`.

[override virtual] bool QSerialPort::canReadLine() const

Implementiert: ` QIODevice::canReadLine()` const.

Gibt ` true ` zurück, wenn eine Datenzeile vom seriellen Port gelesen werden kann; andernfalls wird ` false` zurückgegeben.

Siehe auch readLine().

bool QSerialPort::clear(QSerialPort::Directions directions = AllDirections)

Löscht alle Zeichen aus dem Ausgabe- oder Eingabepuffer, je nach den angegebenen Anweisungen directions. Dies umfasst das Leeren der internen Klassenpuffer und der UART-Puffer (Treiberpuffer). Außerdem werden ausstehende Lese- oder Schreibvorgänge abgebrochen. Bei Erfolg wird true zurückgegeben; andernfalls wird false zurückgegeben.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, gepufferte Daten zu löschen; andernfalls wird „ false “ zurückgegeben und der Fehlercode „ NotOpenError “ gesetzt.

[override virtual] void QSerialPort::close()

Implementiert: ` QIODevice::close()`.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, sie zu schließen; andernfalls wird der Fehlercode „ NotOpenError “ gesetzt.

Siehe auch QIODevice::close().

[signal] void QSerialPort::dataBitsChanged(QSerialPort::DataBits dataBits)

Dieses Signal wird ausgegeben, nachdem sich die Datenbits in einem Frame geändert haben. Die neuen Datenbits in einem Frame werden als „ dataBits “ übergeben.

Hinweis: Benachrichtigungssignal für die Eigenschaft „ dataBits “.

Siehe auch „ QSerialPort::dataBits “.

[signal] void QSerialPort::dataTerminalReadyChanged(bool set)

Dieses Signal wird ausgegeben, nachdem sich der Zustand (High oder Low) des Leitungssignals DTR geändert hat. Der neue Zustand (High oder Low) des Leitungssignals DTR wird als „ set “ übergeben.

Hinweis: Benachrichtigungssignal für die Eigenschaft „ dataTerminalReady “.

Siehe auch „ QSerialPort::dataTerminalReady “.

[signal] void QSerialPort::errorOccurred(QSerialPort::SerialPortError error)

Dieses Signal wird ausgegeben, wenn an der seriellen Schnittstelle ein Fehler auftritt. Die angegebene Eigenschaft „ error “ beschreibt die Art des aufgetretenen Fehlers.

Hinweis: Benachrichtigungssignal für die Eigenschaft „ error “.

Siehe auch „ QSerialPort::error “.

[signal] void QSerialPort::flowControlChanged(QSerialPort::FlowControl flow)

Dieses Signal wird ausgegeben, nachdem der Durchflussregelungsmodus geändert wurde. Der neue Durchflussregelungsmodus wird als „ flow “ übergeben.

Hinweis: Benachrichtigungssignal für die Eigenschaft „ flowControl “.

Siehe auch „ QSerialPort::flowControl “.

bool QSerialPort::flush()

Diese Funktion schreibt so viel wie möglich aus dem internen Schreibpuffer an den zugrunde liegenden seriellen Port, ohne zu blockieren. Wenn Daten geschrieben wurden, gibt diese Funktion „ true “ zurück; andernfalls „ false “.

Rufen Sie diese Funktion auf, um die gepufferten Daten sofort an die serielle Schnittstelle zu senden. Die Anzahl der erfolgreich geschriebenen Bytes hängt vom Betriebssystem ab. In den meisten Fällen muss diese Funktion nicht aufgerufen werden, da die Klasse „ QSerialPort “ automatisch mit dem Senden von Daten beginnt, sobald die Kontrolle an die Ereignisschleife zurückgegeben wird. Wenn keine Ereignisschleife vorhanden ist, rufen Sie stattdessen „ waitForBytesWritten()“ auf.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, gepufferte Daten zu leeren; andernfalls wird „ false “ zurückgegeben und der Fehlercode „ NotOpenError “ gesetzt.

Siehe auch „ write()“ und „ waitForBytesWritten()“.

QSerialPort::Handle QSerialPort::handle() const

Wenn die Plattform unterstützt wird und die serielle Schnittstelle offen ist, gibt die Funktion das native Handle der seriellen Schnittstelle zurück; andernfalls gibt sie „ -1 “ zurück.

Warnung: Diese Funktion ist ausschließlich für erfahrene Anwender gedacht; die Verwendung erfolgt auf eigene Gefahr. Darüber hinaus gibt es für diese Funktion keine Kompatibilitätsgarantie zwischen Qt-Minor-Releases.

[override virtual] bool QSerialPort::isSequential() const

Implementiert: ` QIODevice::isSequential()` const.

Gibt immer ` true` zurück. Die serielle Schnittstelle ist ein sequentielles Gerät.

[override virtual] bool QSerialPort::open(QIODeviceBase::OpenMode mode)

Implementiert: QIODevice::open(QIODeviceBase::OpenMode-Modus).

Öffnet den seriellen Port unter Verwendung von OpenMode mode und gibt bei Erfolg true zurück; andernfalls wird false zurückgegeben und ein Fehlercode gesetzt, der durch Aufruf der Methode error() abgerufen werden kann.

Wenn der Port geöffnet ist, das Festlegen der gewünschten Portparameter jedoch fehlschlägt, gibt die Methode „ false “ zurück und schließt den Port automatisch.

Warnung: Der Modus „ mode “ muss „ QIODeviceBase::ReadOnly “, „ QIODeviceBase::WriteOnly “ oder „ QIODeviceBase::ReadWrite “ lauten. Andere Modi werden nicht unterstützt.

Hinweis: Aus historischen Gründen wird bei erfolgreicher Öffnung das Signal „ errorOccurred()“ mit dem Fehlercode „ NoError “ ausgelöst. Dieses Verhalten wird beibehalten, um die Abwärtskompatibilität zu gewährleisten.

Siehe auch ` QIODeviceBase::OpenMode ` und ` setPort()`.

[signal] void QSerialPort::parityChanged(QSerialPort::Parity parity)

Dieses Signal wird ausgegeben, nachdem der Paritätsprüfmodus geändert wurde. Der neue Paritätsprüfmodus wird als „ parity “ übergeben.

Hinweis: Benachrichtigungssignal für die Eigenschaft „ parity “.

Siehe auch „ QSerialPort::parity “.

QSerialPort::PinoutSignals QSerialPort::pinoutSignals()

Gibt den Zustand der Leitungssignale im Bitmap-Format zurück.

Anhand dieses Ergebnisses lässt sich der Status des gewünschten Signals durch Anwenden einer „AND“-Maske ermitteln, wobei die Maske dem gewünschten Enumerationswert aus QSerialPort::PinoutSignals entspricht.

Hinweis: Diese Methode führt einen Systemaufruf durch und stellt so sicher, dass die Zustände der Leitungssignale korrekt zurückgegeben werden. Dies ist erforderlich, wenn die zugrunde liegenden Betriebssysteme keine korrekten Benachrichtigungen über die Änderungen bereitstellen können.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, die Pinout-Signale abzurufen; andernfalls wird „ NoSignal “ zurückgegeben und der Fehlercode „ NotOpenError “ gesetzt.

Siehe auch „ QSerialPort::dataTerminalReady “ und „ QSerialPort::requestToSend “.

QString QSerialPort::portName() const

Gibt den Namen zurück, der mit ` setPort()` festgelegt oder an den Konstruktor von ` QSerialPort ` übergeben wurde. Dieser Name ist kurz, d. h., er wird aus dem Speicherort der internen Variablen des Geräts extrahiert und umgewandelt. Der Umwandlungsalgorithmus ist plattformspezifisch:

PlattformKurzbeschreibung
WindowsEntfernt das Präfix „\\.\“ oder „//./“ aus dem Systemspeicherort und gibt den Rest der Zeichenkette zurück.
Unix, BSDEntfernt das Präfix „/dev/“ aus dem Systempfad und gibt den Rest der Zeichenkette zurück.

Siehe auch setPortName(), setPort() und QSerialPortInfo::portName().

qint64 QSerialPort::readBufferSize() const

Gibt die Größe des internen Lesepuffers zurück. Dies begrenzt die Datenmenge, die der Client empfangen kann, bevor er die Methoden „ read()“ oder „ readAll()“ aufruft.

Eine Lesepuffergröße von ` 0 ` (Standard) bedeutet, dass der Puffer keine Größenbeschränkung hat, wodurch sichergestellt wird, dass keine Daten verloren gehen.

Siehe auch „ setReadBufferSize()“ und „ read()“.

[override virtual protected] qint64 QSerialPort::readData(char *data, qint64 maxSize)

Implementiert: QIODevice::readData(char *data, qint64 maxSize).

[override virtual protected] qint64 QSerialPort::readLineData(char *data, qint64 maxSize)

Implementiert: QIODevice::readLineData(char *data, qint64 maxSize).

[signal] void QSerialPort::requestToSendChanged(bool set)

Dieses Signal wird ausgegeben, nachdem sich der Zustand (High oder Low) des Leitungssignals RTS geändert hat. Der neue Zustand (High oder Low) des Leitungssignals RTS wird als „ set “ übergeben.

Hinweis: Benachrichtigungssignal für die Eigenschaft „ requestToSend “.

Siehe auch „ QSerialPort::requestToSend “.

void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)

Legt den in der Instanz „ serialPortInfo “ der seriellen Schnittstelle gespeicherten Port fest.

Siehe auch portName() und QSerialPortInfo.

void QSerialPort::setPortName(const QString &name)

Legt den „ name “ des seriellen Anschlusses fest.

Der Name des seriellen Anschlusses kann bei Bedarf entweder als Kurzname oder als vollständiger Systempfad übergeben werden.

Hinweis: Diese Funktion ermöglicht die Einrichtung von Ports, die nicht im ` list of available ports` enthalten sind oder bei denen die Erstellung einer ` QSerialPortInfo `-Instanz mit der Namenszeichenfolge ein ` null `-Objekt ergibt. Wenn dies keine Voraussetzung ist, verwenden Sie stattdessen ` setPort()`, nachdem Sie überprüft haben, dass der Name zu einem gültigen ` QSerialPortInfo `-Objekt führt.

Siehe auch portName() und QSerialPortInfo.

void QSerialPort::setReadBufferSize(qint64 size)

Legt die Größe des internen Lesepuffers von „ QSerialPort “ auf „ size “ Bytes fest.

Wenn die Puffergröße auf einen bestimmten Wert begrenzt ist, puffert „ QSerialPort “ nicht mehr Daten als diese Größe. Der Sonderfall einer Puffergröße von 0 bedeutet, dass der Lesepuffer unbegrenzt ist und alle eingehenden Daten gepuffert werden. Dies ist die Standardeinstellung.

Diese Option ist nützlich, wenn die Daten nur zu bestimmten Zeitpunkten gelesen werden (beispielsweise in einer Echtzeit-Streaming-Anwendung) oder wenn die serielle Schnittstelle davor geschützt werden soll, zu viele Daten zu empfangen, was letztendlich dazu führen könnte, dass der Anwendung der Speicher ausgeht.

Die Übergabe eines negativen Werts deaktiviert den internen Puffer und blockiert damit effektiv jegliche Lesevorgänge.

Siehe auch readBufferSize() und read().

[since 6.10] void QSerialPort::setWriteBufferSize(qint64 size)

Legt die Größe des internen Schreibpuffers von ` QSerialPort` auf ` size ` Bytes fest.

Das Senden von Daten über eine serielle Schnittstelle ist relativ langsam, daher werden die Daten in der Praxis nicht sofort gesendet, wenn write() aufgerufen wird. Sie werden zunächst in einem Zwischenpuffer gespeichert und später in Blöcken geschrieben.

Wenn also zu viele Daten geschrieben werden oder die Schreibgeschwindigkeit höher ist, als die zugrunde liegende serielle Schnittstelle verarbeiten kann, kann der interne Puffer anwachsen. Dies kann schließlich dazu führen, dass der Anwendung der Speicher ausgeht, insbesondere auf einem Gerät mit geringen Speicherressourcen.

Diese Methode ermöglicht es, den internen Puffer auf eine bestimmte Größe zu begrenzen. Übersteigt der nächste Schreibversuch die Kapazität des Puffers, gibt die Methode ` write()` die Anzahl der Bytes zurück, die tatsächlich im Puffer gespeichert wurden. Es liegt in der Verantwortung des Benutzers, den Schreibversuch mit den restlichen Bytes zu wiederholen, nachdem das Signal ` bytesWritten()` empfangen wurde oder nachdem die Methode ` waitForBytesWritten()` den Wert ` true` zurückgibt.

Die Übergabe von „ 0 “ an diese Methode bedeutet, dass der Schreibpuffer unbegrenzt ist und alle an „ write()“ übergebenen Daten gepuffert werden. Dies ist die Standardeinstellung.

Die Übergabe eines negativen Werts hat denselben Effekt wie die Übergabe von ` 0`.

Diese Funktion wurde in Qt 6.10 eingeführt.

Siehe auch ` writeBufferSize()` und ` write()`.

[signal, since 6.9] void QSerialPort::settingsRestoredOnCloseChanged(bool restore)

Dieses Signal wird ausgelöst, nachdem die Eigenschaft „ settingsRestoredOnClose “ geändert wurde. Der Parameter „ restore “ enthält den neuen Wert der Eigenschaft.

Hinweis: Notifier -Signal für die Eigenschaft „ settingsRestoredOnClose “.

Diese Funktion wurde in Qt 6.9 eingeführt.

Siehe auch „ QSerialPort::settingsRestoredOnClose “.

[signal] void QSerialPort::stopBitsChanged(QSerialPort::StopBits stopBits)

Dieses Signal wird ausgegeben, nachdem die Anzahl der Stoppbits in einem Frame geändert wurde. Die neue Anzahl der Stoppbits in einem Frame wird als „ stopBits “ übergeben.

Hinweis: Benachrichtigungssignal für die Eigenschaft ` stopBits`.

Siehe auch „ QSerialPort::stopBits “.

[override virtual] bool QSerialPort::waitForBytesWritten(int msecs = 30000)

Implementiert: ` QIODevice::waitForBytesWritten(int msecs)`.

Diese Funktion wartet, bis mindestens ein Byte an den seriellen Port geschrieben wurde und das Signal „ bytesWritten()“ ausgelöst wurde. Die Funktion läuft nach msecs Millisekunden ab; die Standard-Timeout-Zeit beträgt 30000 Millisekunden. Ist msecs gleich -1, läuft diese Funktion nicht ab.

Die Funktion gibt „ true “ zurück, wenn das Signal „ bytesWritten()“ ausgelöst wurde; andernfalls gibt sie „ false “ zurück (falls ein Fehler aufgetreten ist oder die Zeitüberschreitung eingetreten ist).

[override virtual] bool QSerialPort::waitForReadyRead(int msecs = 30000)

Umsetzung von: ` QIODevice::waitForReadyRead` (int msecs).

Diese Funktion wartet, bis neue Daten zum Lesen verfügbar sind und das Signal „ readyRead()“ ausgegeben wurde. Die Funktion läuft nach msecs Millisekunden ab; die Standard-Zeitüberschreitung beträgt 30000 Millisekunden. Ist msecs gleich -1, läuft diese Funktion nicht ab.

Die Funktion gibt „ true “ zurück, wenn das Signal „ readyRead()“ ausgelöst wurde und neue Daten zum Lesen verfügbar sind; andernfalls gibt sie „ false “ zurück (wenn ein Fehler aufgetreten ist oder die Operation abgelaufen ist).

Siehe auch „ waitForBytesWritten()“.

[since 6.10] qint64 QSerialPort::writeBufferSize() const

Gibt die Größe des internen Schreibpuffers zurück.

Eine Schreibpuffergröße von 0 (Standardwert) bedeutet, dass der Puffer keine Größenbeschränkung hat.

Diese Funktion wurde in Qt 6.10 eingeführt.

Siehe auch „ setWriteBufferSize()“ und „ write()“.

[override virtual protected] qint64 QSerialPort::writeData(const char *data, qint64 maxSize)

Implementiert: ` QIODevice::writeData` (const char *data, qint64 maxSize).

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.