Spec-Zone.ru › Qt

Класс 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 }

Свойства

  • baudRate : qint32
  • breakEnabled : bool
  • dataBits : DataBits
  • dataTerminalReady : bool
  • error : SerialPortError
  • flowControl : FlowControl
  • parity : Parity
  • requestToSend : bool
  • stopBits : StopBits

Открытые функции

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API