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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSerialPort::Baud1200 | 1200 | 1200 Baud. |
QSerialPort::Baud2400 | 2400 | 2400 Baud. |
QSerialPort::Baud4800 | 4800 | 4800 Baud. |
QSerialPort::Baud9600 | 9600 | 9600 Baud. |
QSerialPort::Baud19200 | 19200 | 19.200 Baud. |
QSerialPort::Baud38400 | 38400 | 38.400 Baud. |
QSerialPort::Baud57600 | 57600 | 57.600 Baud. |
QSerialPort::Baud115200 | 115200 | 115.200 Baud. |
Siehe auch QSerialPort::baudRate.
enum QSerialPort::DataBits
Diese Enumeration beschreibt die Anzahl der verwendeten Datenbits.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSerialPort::Data5 | 5 | Die 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::Data6 | 6 | Die Anzahl der Datenbits pro Zeichen beträgt 6. Diese Einstellung wird selten verwendet. |
QSerialPort::Data7 | 7 | Die 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::Data8 | 8 | Die 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSerialPort::Input | 1 | Eingaberichtung. |
QSerialPort::Output | 2 | Ausgangsrichtung. |
QSerialPort::AllDirections | Input | Output | Gleichzeitig 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSerialPort::NoFlowControl | 0 | Keine Flusssteuerung. |
QSerialPort::HardwareControl | 1 | Hardware-Flusskontrolle (RTS/CTS). |
QSerialPort::SoftwareControl | 2 | Software-Flusskontrolle (XON/XOFF). |
Siehe auch „ QSerialPort::flowControl “.
enum QSerialPort::Parity
Diese Enumeration beschreibt das verwendete Paritätsschema.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSerialPort::NoParity | 0 | Es wird kein Paritätsbit gesendet. Dies ist die gängigste Paritätseinstellung. Die Fehlererkennung erfolgt über das Kommunikationsprotokoll. |
QSerialPort::EvenParity | 2 | Die Anzahl der 1-Bits in jedem Zeichen, einschließlich des Paritätsbits, ist immer gerade. |
QSerialPort::OddParity | 3 | Die 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::SpaceParity | 4 | Leerzeichen-Parität. Das Paritätsbit wird im Leerzeichen-Signalzustand gesendet. Es liefert keine Informationen zur Fehlererkennung. |
QSerialPort::MarkParity | 5 | Mark-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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSerialPort::NoSignal | 0x00 | Keine Leitung aktiv |
QSerialPort::DataTerminalReadySignal | 0x04 | DTR (Data Terminal Ready). |
QSerialPort::DataCarrierDetectSignal | 0x08 | DCD (Data Carrier Detect). |
QSerialPort::DataSetReadySignal | 0x10 | DSR (Data Set Ready). |
QSerialPort::RingIndicatorSignal | 0x20 | RNG (Klingelanzeige). |
QSerialPort::RequestToSendSignal | 0x40 | RTS (Sendeanforderung). |
QSerialPort::ClearToSendSignal | 0x80 | CTS (Sendefreigabe). |
QSerialPort::SecondaryTransmittedDataSignal | 0x100 | STD (Sekundär gesendete Daten). |
QSerialPort::SecondaryReceivedDataSignal | 0x200 | SRD (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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSerialPort::NoError | 0 | Es ist kein Fehler aufgetreten. |
QSerialPort::DeviceNotFoundError | 1 | Beim Versuch, ein nicht vorhandenes Gerät zu öffnen, ist ein Fehler aufgetreten. |
QSerialPort::PermissionError | 2 | Beim 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::OpenError | 3 | Beim Versuch, ein in diesem Objekt bereits geöffnetes Gerät zu öffnen, ist ein Fehler aufgetreten. |
QSerialPort::NotOpenError | 10 | Dieser 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::WriteError | 4 | Beim Schreiben der Daten ist ein E/A-Fehler aufgetreten. |
QSerialPort::ReadError | 5 | Beim Lesen der Daten ist ein E/A-Fehler aufgetreten. |
QSerialPort::ResourceError | 6 | Ein 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::UnsupportedOperationError | 7 | Die angeforderte Geräteoperation wird vom laufenden Betriebssystem nicht unterstützt oder ist dort untersagt. |
QSerialPort::TimeoutError | 9 | Es ist ein Timeout-Fehler aufgetreten. Dieser Wert wurde in QtSerialPort 5.2 eingeführt. |
QSerialPort::UnknownError | 8 | Es ist ein nicht identifizierter Fehler aufgetreten. |
Siehe auch „ QSerialPort::error “.
enum QSerialPort::StopBits
Diese Enumeration beschreibt die Anzahl der verwendeten Stoppbits.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSerialPort::OneStop | 1 | 1 Stoppbit. |
QSerialPort::OneAndHalfStop | 3 | 1,5 Stoppbits. Dies gilt nur für die Windows-Plattform. |
QSerialPort::TwoStop | 2 | 2 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:
| Plattform | Kurzbeschreibung |
|---|---|
| Windows | Entfernt das Präfix „\\.\“ oder „//./“ aus dem Systemspeicherort und gibt den Rest der Zeichenkette zurück. |
| Unix, BSD | Entfernt 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.