Класс QSerialPort
Предоставляет функции для доступа к последовательным портам. Подробнее...
| Заголовок: | #include <QSerialPort> |
| CMake: | find_package(Qt6 COMPONENTS SerialPort REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::SerialPort) |
| qmake: | QT += serialport |
| С момента: | Qt 5.1 |
| Наследует: | QIODevice |
Примечание: Все функции в этом классе являются реентерабельными.
Публичные типы
| перечисление | BaudRate { Baud1200, Baud2400, Baud4800, Baud9600, Baud19200, …, Baud115200 } |
| перечисление | DataBits { Data5, Data6, Data7, Data8 } |
| перечисление | Direction { Input, Output, AllDirections } |
| флаги | Directions |
| перечисление | FlowControl { NoFlowControl, HardwareControl, SoftwareControl } |
| перечисление | Parity { NoParity, EvenParity, OddParity, SpaceParity, MarkParity } |
| перечисление | PinoutSignal { NoSignal, DataTerminalReadySignal, DataCarrierDetectSignal, DataSetReadySignal, RingIndicatorSignal, …, SecondaryReceivedDataSignal } |
| флаги | PinoutSignals |
| перечисление | SerialPortError { NoError, DeviceNotFoundError, PermissionError, OpenError, NotOpenError, …, UnknownError } |
| перечисление | StopBits { OneStop, OneAndHalfStop, TwoStop } |
Свойства
|
|
Открытые функции
| QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr) | |
| QSerialPort(const QString &name, QObject *parent = nullptr) | |
| QSerialPort(QObject *parent = nullptr) | |
| виртуальный | ~QSerialPort() |
| qint32 | baudRate(QSerialPort::Directions directions = AllDirections) const |
| 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) |
| bool | setStopBits(QSerialPort::StopBits stopBits) |
| QSerialPort::StopBits | stopBits() const |
Переопределённые открытые функции
| virtual qint64 | bytesAvailable() const override |
| virtual qint64 | bytesToWrite() const override |
| virtual bool | canReadLine() const override |
| virtual void | закрыть() override |
| virtual bool | isSequential() const override |
| virtual bool | открыть(QIODeviceBase::OpenMode mode) override |
| virtual bool | подождатьЗаписьБайтов(int msecs = 30000) override |
| virtual bool | подождатьГотовностьКЧтению(int msecs = 30000) override |
Сигналы
| 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) |
| void | stopBitsChanged(QSerialPort::StopBits stopBits) |
Переопределенные защищенные функции
| 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 |
Подробное описание
Вы можете получить информацию о доступных последовательных портах, используя вспомогательный класс QSerialPortInfo, который позволяет перечислить все последовательные порты в системе. Это полезно для получения правильного имени последовательного порта, который вы хотите использовать. Вы можете передать объект вспомогательного класса в качестве аргумента методам setPort() или setPortName() для назначения желаемого последовательного устройства.
После настройки порта вы можете открыть его в режиме только для чтения (r/o), только для записи (w/o) или чтения-записи (r/w) с помощью метода открыть().
Примечание: Последовательный порт всегда открывается с эксклюзивным доступом (то есть, ни другой процесс или поток не может получить доступ к уже открытому последовательному порту).
Используйте метод закрыть() для закрытия порта и отмены операций ввода-вывода.
После успешного открытия QSerialPort пытается определить текущую конфигурацию порта и инициализирует себя. Вы можете переконфигурировать порт до желаемых настроек с помощью методов setBaudRate(), setDataBits(), setParity(), setStopBits() и setFlowControl().
Есть несколько свойств для работы с сигналами вывода, а именно: QSerialPort::dataTerminalReady, QSerialPort::requestToSend. Также можно использовать метод pinoutSignals() для запроса текущих установленных сигналов вывода.
После того, как вы узнаете, что порты готовы к чтению или записи, вы можете использовать методы read() или write(). Кроме того, можно вызвать удобные методы readLine() и readAll(). Если не все данные считываются сразу, оставшиеся данные будут доступны позже, поскольку новые входящие данные добавляются в внутренний буфер чтения QSerialPort. Вы можете ограничить размер буфера чтения с помощью setReadBufferSize().
QSerialPort предоставляет набор функций, которые приостанавливают вызывающий поток до тех пор, пока не будут выпущены определенные сигналы. Эти функции могут быть использованы для реализации блокирующих последовательных портов:
- waitForReadyRead() блокирует вызовы до тех пор, пока не станут доступны новые данные для чтения.
- waitForBytesWritten() блокирует вызовы до тех пор, пока один пакет данных не будет записан в последовательный порт.
Смотрите следующий пример:
int numRead = 0, numReadTotal = 0;
char buffer[50];
for (;;) {
numRead = serial.read(buffer, 50);
// Do whatever with the array
numReadTotal += numRead;
if (numRead == 0 && !serial.waitForReadyRead())
break;
} Если waitForReadyRead() возвращает false, соединение было закрыто или произошла ошибка.
Если в какой-либо момент произойдет ошибка, QSerialPort выпустит сигнал errorOccurred(). Вы также можете вызвать error() для определения типа произошедшей ошибки.
Программирование с блокирующим последовательным портом радикально отличается от программирования с неблокирующим последовательным портом. Блокирующий последовательный порт не требует цикла событий и, как правило, приводит к более простому коду. Однако в приложении графического интерфейса блокирующий последовательный порт следует использовать только в потоках, не связанных с графическим интерфейсом, чтобы избежать зависания пользовательского интерфейса.
Для получения более подробной информации об этих подходах обратитесь к приложениям примеров.
Класс QSerialPort также может использоваться с QTextStream и QDataStream операторами потоков (operator<<() и operator>>()). Однако следует учитывать одну проблему: убедитесь, что достаточно данных доступно перед попыткой чтения с помощью перегруженного оператора operator>>().
См. также QSerialPortInfo.
Документация по типам членов
перечисление QSerialPort::BaudRate
Это перечисление описывает скорость передачи данных, с которой работает устройство связи.
Примечание: В этом перечислении указаны только наиболее распространенные стандартные скорости передачи данных.
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::Baud1200 |
1200 |
1200 бод. |
QSerialPort::Baud2400 |
2400 |
2400 бод. |
QSerialPort::Baud4800 |
4800 |
4800 бод. |
QSerialPort::Baud9600 |
9600 |
9600 бод. |
QSerialPort::Baud19200 |
19200 |
19200 бод. |
QSerialPort::Baud38400 |
38400 |
38400 бод. |
QSerialPort::Baud57600 |
57600 |
57600 бод. |
QSerialPort::Baud115200 |
115200 |
115200 бод. |
См. также QSerialPort::baudRate.
перечисление QSerialPort::DataBits
Это перечисление описывает количество битов данных, используемых.
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::Data5 |
5 |
Количество битов данных в каждом символе равно 5. Используется для кода Baudot. Обычно имеет смысл только со старым оборудованием, таким как телепринтеры. |
QSerialPort::Data6 |
6 |
Количество битов данных в каждом символе равно 6. Редко используется. |
QSerialPort::Data7 |
7 |
Количество битов данных в каждом символе равно 7. Используется для истинного ASCII. Обычно имеет смысл только со старым оборудованием, таким как телепринтеры. |
QSerialPort::Data8 |
8 |
Количество битов данных в каждом символе равно 8. Используется для большинства типов данных, так как этот размер соответствует размеру байта. Почти повсеместно используется в новых приложениях. |
См. также QSerialPort::dataBits.
перечисление QSerialPort::Directionфлаги QSerialPort::Directions
Это перечисление описывает возможные направления передачи данных.
Примечание: Это перечисление используется для настройки скорости передачи данных устройства отдельно для каждого направления на некоторых операционных системах (например, подобных POSIX).
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::Input |
1 |
Направление ввода. |
QSerialPort::Output |
2 |
Направление вывода. |
QSerialPort::AllDirections |
Input | Output |
Одновременное в двух направлениях. |
Тип Directions — это псевдоним для QFlags<Direction>. Он хранит сочетание значений Direction с помощью операции ИЛИ.
перечисление QSerialPort::FlowControl
Это перечисление описывает используемый метод управления потоком.
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::NoFlowControl |
0 |
Отсутствует управление потоком. |
QSerialPort::HardwareControl |
1 |
Аппаратное управление потоком (RTS/CTS). |
QSerialPort::SoftwareControl |
2 |
Программное управление потоком (XON/XOFF). |
См. также QSerialPort::flowControl.
перечисление QSerialPort::Parity
Это перечисление описывает используемую схему чётности.
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::NoParity |
0 |
Нет бита чётности. Это наиболее распространённое значение чётности. Обнаружение ошибок выполняется протоколом связи. |
QSerialPort::EvenParity |
2 |
Количество битов 1 в каждом символе, включая бит чётности, всегда чётное. |
QSerialPort::OddParity |
3 |
Количество битов 1 в каждом символе, включая бит чётности, всегда нечётное. Это гарантирует, что в каждом символе происходит по крайней мере одна смена состояния. |
QSerialPort::SpaceParity |
4 |
Пробельная чётность. Бит чётности отправляется в состоянии сигнала пробела. Он не предоставляет информацию об обнаружении ошибок. |
QSerialPort::MarkParity |
5 |
Маркерная чётность. Бит чётности всегда устанавливается в состояние сигнала маркера (логическая 1). Он не предоставляет информацию об обнаружении ошибок. |
См. также QSerialPort::parity.
перечисление QSerialPort::PinoutSignalфлаги QSerialPort::PinoutSignals
Это перечисление описывает возможные сигналы для подключения RS-232.
| Константа | Значение | Описание |
|---|---|---|
QSerialPort::NoSignal |
0x00 |
Линия не активна |
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 (Ring Indicator). |
QSerialPort::RequestToSendSignal |
0x40 |
RTS (Request To Send). |
QSerialPort::ClearToSendSignal |
0x80 |
CTS (Clear To Send). |
QSerialPort::SecondaryTransmittedDataSignal |
0x100 |
STD (Secondary Transmitted Data). |
QSerialPort::SecondaryReceivedDataSignal |
0x200 |
SRD (Secondary Received Data). |
Тип PinoutSignals является псевдонимом для QFlags<PinoutSignal>. Он хранит логическое ИЛИ комбинацию значений PinoutSignal.
См. также pinoutSignals(), QSerialPort::dataTerminalReady и QSerialPort::requestToSend.
перечисление QSerialPort::SerialPortError
Это перечисление описывает ошибки, которые могут содержаться в свойстве QSerialPort::error.
| Константа | Значение | Описание |
|---|---|---|
QSerialPort::NoError |
0 |
Ошибка не произошла. |
QSerialPort::DeviceNotFoundError |
1 |
Произошла ошибка при попытке открыть несуществующее устройство. |
QSerialPort::PermissionError |
2 |
Произошла ошибка при попытке открыть устройство, уже открытое другим процессом или пользователем, у которого недостаточно прав для открытия. |
QSerialPort::OpenError |
3 |
Произошла ошибка при попытке открыть устройство, которое уже открыто в этом объекте. |
QSerialPort::NotOpenError |
10 |
Эта ошибка возникает, когда выполняется операция, которая может быть успешно выполнена только если устройство открыто. Это значение было введено в QtSerialPort 5.2. |
QSerialPort::WriteError |
4 |
Произошла ошибка ввода/вывода во время записи данных. |
QSerialPort::ReadError |
5 |
Произошла ошибка ввода/вывода во время чтения данных. |
QSerialPort::ResourceError |
6 |
Произошла ошибка ввода/вывода, когда ресурс стал недоступным, например, когда устройство неожиданно было удалено из системы. |
QSerialPort::UnsupportedOperationError |
7 |
Запрошенная операция устройства не поддерживается или запрещена текущей операционной системой. |
QSerialPort::TimeoutError |
9 |
Произошла ошибка таймаута. Это значение было введено в QtSerialPort 5.2. |
QSerialPort::UnknownError |
8 |
Произошла неопределенная ошибка. |
См. также QSerialPort::error.
перечисление QSerialPort::StopBits
Это перечисление описывает количество стоп-битов.
| Константа | Значение | Описание |
|---|---|---|
QSerialPort::OneStop |
1 |
1 стоп-бит. |
QSerialPort::OneAndHalfStop |
3 |
1,5 стоп-бита. Это только для платформы Windows. |
QSerialPort::TwoStop |
2 |
2 стоп-бита. |
См. также QSerialPort::stopBits.
Документация свойств
baudRate : qint32
Это свойство содержит скорость передачи данных для заданного направления.
Если установка прошла успешно или была выполнена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error. Для установки скорости передачи данных используйте перечисление QSerialPort::BaudRate или любое положительное значение qint32.
Примечание: Если установка выполнена до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.
Предупреждение: Флаг AllDirections поддерживается на всех платформах. Windows поддерживает только этот режим.
Предупреждение: На Windows возвращается одинаковая скорость передачи данных в любом направлении.
Значение по умолчанию — Baud9600, т.е. 9600 бит в секунду.
Функции доступа:
| qint32 | baudRate(QSerialPort::Directions directions = AllDirections) const |
| bool | setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections) |
Сигнал уведомления:
| void | baudRateChanged(qint32 baudRate, QSerialPort::Directions directions) |
[bindable, since 5.5] breakEnabled : bool
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит состояние линии передачи в состоянии разрыва.
Возвращает true при успехе, false в противном случае. Если флаг true, то линия передачи находится в состоянии разрыва; в противном случае — в состоянии без разрыва.
Примечание: Последовательный порт должен быть открыт перед попыткой установить или получить это свойство; в противном случае возвращается false и устанавливается код ошибки NotOpenError. Это немного необычно по сравнению с обычными настройками свойств Qt для класса. Однако это особый случай, так как свойство устанавливается через взаимодействие с ядром и аппаратным обеспечением. Поэтому два сценария нельзя полностью сравнить друг с другом.
Это свойство было введено в Qt 5.5.
[bindable] dataBits : DataBits
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит количество битов данных в кадре.
Если установка прошла успешно или была выполнена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.
Примечание: Если установка выполнена до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.
Значение по умолчанию — Data8, т.е. 8 битов данных.
dataTerminalReady : bool
Это свойство содержит состояние (высокое или низкое) сигнала линии DTR.
Возвращает true при успехе, false в противном случае. Если флаг true, то сигнал DTR установлен в высокое состояние; в противном случае — в низкое.
Примечание: Последовательный порт должен быть открыт перед попыткой установить или получить это свойство; в противном случае возвращается false и код ошибки устанавливается в NotOpenError.
Функции доступа:
| bool | isDataTerminalReady() |
| bool | setDataTerminalReady(bool set) |
Сигнал уведомления:
| void | dataTerminalReadyChanged(bool set) |
См. также pinoutSignals().
[bindable read-only] error : SerialPortError
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит состояние ошибки последовательного порта.
Устройство ввода-вывода возвращает код ошибки. Например, если open() возвращает false, или операция чтения/записи возвращает -1, это свойство можно использовать для определения причины, по которой операция завершилась неудачно.
Код ошибки устанавливается в значение по умолчанию QSerialPort::NoError после вызова clearError()
[bindable] flowControl : FlowControl
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит желаемый режим управления потоком.
Если установка прошла успешно или была выполнена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.
Примечание: Если установка выполнена до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.
Значение по умолчанию — NoFlowControl, т.е. без управления потоком.
[bindable] parity : Parity
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит режим проверки четности.
Если установка прошла успешно или была выполнена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.
Примечание: Если установка выполнена до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.
Значение по умолчанию — NoParity, т.е. без проверки четности.
requestToSend : bool
Это свойство содержит состояние (высокое или низкое) сигнала линии RTS.
Возвращает true при успехе, false в противном случае. Если флаг true, то сигнал RTS установлен в высокое состояние; в противном случае — в низкое.
Примечание: Последовательный порт должен быть открыт перед попыткой установить или получить это свойство; в противном случае возвращается false и код ошибки устанавливается в NotOpenError.
Примечание: Попытка управлять сигналом RTS в режиме HardwareControl завершится ошибкой с кодом UnsupportedOperationError, так как сигнал автоматически управляется драйвером.
Функции доступа:
| bool | isRequestToSend() |
| bool | setRequestToSend(bool set) |
Сигнал уведомления:
| void | requestToSendChanged(bool set) |
См. также pinoutSignals().
[bindable] stopBits : StopBits
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит количество стоповых битов в кадре.
Если установка прошла успешно или была выполнена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.
Примечание: Если установка выполнена до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.
Значение по умолчанию — OneStop, т.е. 1 стоповой бит.
Документация функций-членов
QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)
Создает новый объект последовательного порта с заданным parent для представления последовательного порта с указанным вспомогательным классом serialPortInfo.
QSerialPort::QSerialPort(const QString &name, QObject *parent = nullptr)
Создает новый объект последовательного порта с заданным parent для представления последовательного порта со значением name.
Имя должно иметь определенный формат; см. метод setPort().
QSerialPort::QSerialPort(QObject *parent = nullptr)
Создает новый объект последовательного порта с заданным parent.
[signal] void QSerialPort::baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)
Этот сигнал испускается после изменения скорости передачи данных. Новая скорость передачи данных передается как baudRate, а направления как directions.
Примечание: Сигнал-уведомление для свойства baudRate.
См. также QSerialPort::baudRate.
[signal] void QSerialPort::dataBitsChanged(QSerialPort::DataBits dataBits)
Этот сигнал испускается после изменения размера данных в кадре. Новый размер данных в кадре передается как dataBits.
Примечание: Сигнал-уведомление для свойства dataBits.
См. также QSerialPort::dataBits.
[signal] void QSerialPort::dataTerminalReadyChanged(bool set)
Этот сигнал испускается после изменения состояния (высокого или низкого) сигнала линии DTR. Новое состояние (высокое или низкое) сигнала линии DTR передается как set.
Примечание: Сигнал-уведомление для свойства dataTerminalReady.
См. также QSerialPort::dataTerminalReady.
[signal, since 5.8] void QSerialPort::errorOccurred(QSerialPort::SerialPortError error)
Этот сигнал испускается при возникновении ошибки в последовательном порту. Указанная error описывает тип возникшей ошибки.
Примечание: Сигнал-уведомление для свойства error.
Эта функция была представлена в Qt 5.8.
См. также QSerialPort::error.
[signal] void QSerialPort::flowControlChanged(QSerialPort::FlowControl flow)
Этот сигнал испускается после изменения режима управления потоком. Новый режим управления потоком передается как flow.
Примечание: Сигнал-уведомление для свойства flowControl.
См. также QSerialPort::flowControl.
[signal] void QSerialPort::parityChanged(QSerialPort::Parity parity)
Этот сигнал испускается после изменения режима проверки чётности. Новый режим проверки чётности передаётся как parity.
Примечание: Сигнал-уведомление для свойства parity.
См. также QSerialPort::parity.
[signal] void QSerialPort::requestToSendChanged(bool set)
Этот сигнал испускается после изменения состояния (высокого или низкого) сигнала линии RTS. Новое состояние (высокое или низкое) сигнала линии RTS передаётся как set.
Примечание: Сигнал-уведомление для свойства requestToSend.
См. также QSerialPort::requestToSend.
[signal] void QSerialPort::stopBitsChanged(QSerialPort::StopBits stopBits)
Этот сигнал испускается после изменения количества стоповых битов в кадре. Новое количество стоповых битов в кадре передаётся как stopBits.
Примечание: Сигнал-уведомление для свойства stopBits.
См. также QSerialPort::stopBits.
[virtual] QSerialPort::~QSerialPort()
Закрывает последовательный порт, если необходимо, а затем уничтожает объект.
[override virtual] qint64 QSerialPort::bytesAvailable() const
Переопределяет: QIODevice::bytesAvailable() const.
Возвращает количество входящих байтов, ожидающих чтения.
См. также bytesToWrite() и read().
[override virtual] qint64 QSerialPort::bytesToWrite() const
Переопределяет: QIODevice::bytesToWrite() const.
Возвращает количество байтов, ожидающих записи. Байты записываются, когда управление возвращается в цикл событий или когда вызывается flush().
См. также bytesAvailable() и flush().
[override virtual] bool QSerialPort::canReadLine() const
Переопределяет: QIODevice::canReadLine() const.
Возвращает true , если строка данных может быть прочитана из последовательного порта; в противном случае возвращает false.
См. также readLine().
bool QSerialPort::clear(QSerialPort::Directions directions = AllDirections)
Удаляет все символы из буфера вывода или ввода, в зависимости от заданных направлений directions. Это включает очистку внутренних буферов класса и буферов UART (драйвера). Также завершаются ожидающие операции чтения или записи. Если операция выполнена успешно, возвращает true; в противном случае возвращает false.
Примечание: Последовательный порт должен быть открыт перед попытку очистки буферизованных данных; в противном случае возвращает false и устанавливает код ошибки NotOpenError.
[override virtual] void QSerialPort::close()
Переопределяет: QIODevice::close().
Примечание: Последовательный порт должен быть открыт перед закрытием; в противном случае устанавливается код ошибки NotOpenError.
См. также QIODevice::close().
bool QSerialPort::flush()
Эта функция записывает как можно больше данных из внутреннего буфера записи в базовый последовательный порт без блокировки. Если данные были записаны, эта функция возвращает true; в противном случае возвращает false.
Вызывайте эту функцию для немедленной отправки буферизованных данных в последовательный порт. Количество успешно записанных байтов зависит от операционной системы. В большинстве случаев вызывать эту функцию не нужно, так как класс QSerialPort автоматически начнёт отправку данных, как только управление вернётся в цикл событий. При отсутствии цикла событий, используйте waitForBytesWritten().
Примечание: Последовательный порт должен быть открыт перед попытку сбросить буферизованные данные; в противном случае возвращает false и устанавливает код ошибки NotOpenError.
См. также write() и waitForBytesWritten().
[since 5.2] QSerialPort::Handle QSerialPort::handle() const
Если платформа поддерживается и последовательный порт открыт, возвращает дескриптор native последовательного порта; в противном случае возвращает -1.
Предупреждение: Эта функция предназначена только для опытных пользователей; используйте её на свой страх и риск. Кроме того, эта функция не гарантирует совместимость между версиями Qt.
Эта функция была представлена в Qt 5.2.
[override virtual] bool QSerialPort::isSequential() const
Переопределяет: QIODevice::isSequential() const.
Всегда возвращает true. Последовательный порт является последовательным устройством.
[override virtual] bool QSerialPort::open(QIODeviceBase::OpenMode mode)
Переопределяет: QIODevice::open(QIODeviceBase::OpenMode mode).
Открывает последовательный порт, используя OpenMode mode, и возвращает true при успехе; в противном случае возвращает false и устанавливает код ошибки, который можно получить, вызвав метод error().
Примечание: Метод возвращает false при успешном открытии порта, но не смог успешно установить какие-либо параметры порта. В этом случае порт автоматически закрывается, чтобы не оставить порт с неправильными настройками.
Предупреждение: mode должен быть QIODeviceBase::ReadOnly, QIODeviceBase::WriteOnly или QIODeviceBase::ReadWrite. Другие режимы не поддерживаются.
См. также QIODeviceBase::OpenMode и setPort().
QSerialPort::PinoutSignals QSerialPort::pinoutSignals()
Возвращает состояние сигналов линии в формате битовой карты.
Из этого результата можно получить состояние нужного сигнала, применив маску «И», где маска — желаемое значение перечисления из QSerialPort::PinoutSignals.
Примечание: Этот метод выполняет системный вызов, гарантируя правильное возвращение состояния сигналов линии. Это необходимо, когда основанные на операционной системе механизмы не могут обеспечить надлежащее уведомление о изменениях.
Примечание: Последовательный порт должен быть открыт, прежде чем пытаться получить сигналы pinout; в противном случае возвращает NoSignal и устанавливает код ошибки NotOpenError.
См. также QSerialPort::dataTerminalReady и QSerialPort::requestToSend.
QString QSerialPort::portName() const
Возвращает имя, заданное методом setPort() или переданное конструктору QSerialPort. Это имя короткое, т.е. оно извлечено и преобразовано из системного расположения устройства внутри. Алгоритм преобразования зависит от платформы:
| Платформа | Краткое описание |
|---|---|
| Windows | Удаляет префикс "\\.\" или "//./" из системного расположения и возвращает оставшуюся часть строки. |
| Unix, BSD | Удаляет префикс "/dev/" из системного расположения и возвращает оставшуюся часть строки. |
См. также setPortName(), setPort() и QSerialPortInfo::portName().
qint64 QSerialPort::readBufferSize() const
Возвращает размер внутреннего буфера чтения. Это ограничивает количество данных, которые клиент может получить, прежде чем вызвать методы read() или readAll().
Размер буфера чтения 0 (по умолчанию) означает, что у буфера нет ограничения по размеру, что гарантирует, что никакие данные не будут потеряны.
См. также setReadBufferSize() и read().
[override virtual protected] qint64 QSerialPort::readData(char *data, qint64 maxSize)
Реализует: QIODevice::readData(char *data, qint64 maxSize).
[override virtual protected] qint64 QSerialPort::readLineData(char *data, qint64 maxSize)
Реализует: QIODevice::readLineData(char *data, qint64 maxSize).
void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)
Устанавливает порт, хранящийся в экземпляре информации о последовательном порте serialPortInfo.
См. также portName() и QSerialPortInfo.
void QSerialPort::setPortName(const QString &name)
Устанавливает name последовательного порта.
Имя последовательного порта может быть передано как короткое имя, или, при необходимости, полное системное расположение.
См. также portName() и QSerialPortInfo.
void QSerialPort::setReadBufferSize(qint64 size)
Устанавливает размер внутреннего буфера чтения QSerialPort на size байт.
Если размер буфера ограничен, QSerialPort не будет буферизовать больше, чем этот размер данных. Специальный случай размера буфера 0 означает, что буфер чтения не ограничен и все входящие данные буферизуются. Это значение по умолчанию.
Эта опция полезна, если данные считываются только в определенные моменты времени (например, в приложении в режиме реального времени) или если последовательный порт должен быть защищен от приема слишком большого количества данных, что может привести к недостатку памяти в приложении.
См. также readBufferSize() и read().
[override virtual] bool QSerialPort::waitForBytesWritten(int msecs = 30000)
Реализует: QIODevice::waitForBytesWritten(int msecs).
Эта функция блокируется до тех пор, пока не будет записан хотя бы один байт в последовательный порт и не будет послан сигнал bytesWritten(). Функция ожидает истечения времени в течение msecs миллисекунд; по умолчанию время ожидания составляет 30000 миллисекунд. Если msecs равно -1, эта функция не будет ждать истечения времени.
Функция возвращает true если сигнал bytesWritten() будет послан; в противном случае возвращает false (если произошла ошибка или операция была прервана по тайм-ауту).
[override virtual] bool QSerialPort::waitForReadyRead(int msecs = 30000)
Реализует: QIODevice::waitForReadyRead(int msecs).
Эта функция блокируется до тех пор, пока новые данные не станут доступны для чтения и не будет послан сигнал readyRead(). Функция ожидает истечения времени в течение msecs миллисекунд; по умолчанию время ожидания составляет 30000 миллисекунд. Если msecs равно -1, эта функция не будет ждать истечения времени.
Функция возвращает true если сигнал readyRead() будет послан и новые данные доступны для чтения; в противном случае возвращает false (если произошла ошибка или операция была прервана по тайм-ауту).
См. также waitForBytesWritten().
[override virtual protected] qint64 QSerialPort::writeData(const char *data, qint64 maxSize)
Реализует: QIODevice::writeData(const char *data, qint64 maxSize).
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qserialport.html