Spec-Zone.ru › Qt 5.6

Класс QSerialPort

Предоставляет функции для доступа к последовательным портам. Подробнее...

Заголовок: #include <QSerialPort>
qmake: QT += serialport
С тех пор: Qt 5.1
Наследуется от: QIODevice
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Примечание: Все функции в этом классе являются перевходными.

Типы публичного доступа

Перечисление BaudRate { Baud1200, Baud2400, Baud4800, Baud9600, ..., UnknownBaud }
Перечисление DataBits { Data5, Data6, Data7, Data8, UnknownDataBits }
Перечисление Direction { Input, Output, AllDirections }
Флаги Directions
Перечисление FlowControl { NoFlowControl, HardwareControl, SoftwareControl, UnknownFlowControl }
Перечисление Parity { NoParity, EvenParity, OddParity, SpaceParity, MarkParity, UnknownParity }
Перечисление PinoutSignal { NoSignal, TransmittedDataSignal, ReceivedDataSignal, DataTerminalReadySignal, ..., SecondaryReceivedDataSignal }
Флаги PinoutSignals
Перечисление SerialPortError { NoError, DeviceNotFoundError, PermissionError, OpenError, ..., UnknownError }
Перечисление StopBits { OneStop, OneAndHalfStop, TwoStop, UnknownStopBits }

Свойства

  • baudRate : qint32
  • breakEnabled : bool
  • dataBits : DataBits
  • dataTerminalReady : bool
  • error : SerialPortError
  • flowControl : FlowControl
  • parity : Parity
  • requestToSend : bool
  • stopBits : StopBits
  • 1 свойство унаследовано от QObject

Публичные функции

QSerialPort(QObject *parent = Q_NULLPTR)
QSerialPort(const QString &name, QObject *parent = Q_NULLPTR)
QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = Q_NULLPTR)
virtual ~QSerialPort()
qint32 baudRate(Directions directions = AllDirections) const
bool clear(Directions directions = AllDirections)
void clearError()
DataBits dataBits() const
SerialPortError error() const
FlowControl flowControl() const
bool flush()
Handle handle() const
bool isBreakEnabled() const
bool isDataTerminalReady()
bool isRequestToSend()
Parity parity() const
PinoutSignals pinoutSignals()
QString portName() const
qint64 readBufferSize() const
(deprecated) bool sendBreak(int duration = 0)
bool setBaudRate(qint32 baudRate, Directions directions = AllDirections)
bool setBreakEnabled(bool set = true)
bool setDataBits(DataBits dataBits)
bool setDataTerminalReady(bool set)
bool setFlowControl(FlowControl flowControl)
bool setParity(Parity parity)
void setPort(const QSerialPortInfo &serialPortInfo)
void setPortName(const QString &name)
void setReadBufferSize(qint64 size)
bool setRequestToSend(bool set)
bool setStopBits(StopBits stopBits)
StopBits stopBits() const

Переопределенные публичные функции

виртуальный bool atEnd() const
виртуальный qint64 bytesAvailable() const
виртуальный qint64 bytesToWrite() const
виртуальный bool canReadLine() const
виртуальный void close()
виртуальный bool isSequential() const
виртуальный bool open(OpenMode mode)
виртуальный bool waitForBytesWritten(int msecs)
виртуальный bool waitForReadyRead(int msecs)
  • 33 публичных функций, унаследованных от QIODevice
  • 31 публичных функций, унаследованных от QObject

Сигналы

void baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)
void breakEnabledChanged(bool set)
void dataBitsChanged(QSerialPort::DataBits dataBits)
void dataTerminalReadyChanged(bool set)
void error(QSerialPort::SerialPortError error)
void flowControlChanged(QSerialPort::FlowControl flow)
void parityChanged(QSerialPort::Parity parity)
void requestToSendChanged(bool set)
void stopBitsChanged(QSerialPort::StopBits stopBits)
  • 4 сигнала, унаследованные от QIODevice
  • 2 сигнала, унаследованные от QObject

Переопределённые защищённые функции

виртуальный qint64 readData(char *data, qint64 maxSize)
виртуальный qint64 readLineData(char *data, qint64 maxSize)
виртуальный qint64 writeData(const char *data, qint64 maxSize)
  • 5 защищённых функций, унаследованных от QIODevice
  • 9 защищённых функций, унаследованных от QObject

Дополнительные унаследованные члены

  • 1 публичный слот, унаследованный от QObject
  • 11 статических публичных членов, унаследованных от QObject
  • 5 защищённых функций, унаследованных от QIODevice
  • 9 защищённых функций, унаследованных от QObject

Подробное описание

Предоставляет функции для доступа к последовательным портам.

Вы можете получить информацию о доступных последовательных портах, используя вспомогательный класс QSerialPortInfo, который позволяет перечислить все последовательные порты в системе. Это полезно для получения правильного имени последовательного порта, который вы хотите использовать. Вы можете передать объект вспомогательного класса в качестве аргумента методам setPort() или setPortName() для назначения желаемого последовательного устройства.

После настройки порта вы можете открыть его в режиме только для чтения (чтение), только для записи (запись) или для чтения/записи (чтение/запись) с помощью метода open().

Примечание: Последовательный порт всегда открывается с эксклюзивным доступом (то есть ни другой процесс или поток не может получить доступ к уже открытому последовательному порту).

Используйте метод close() для закрытия порта и отмены операций ввода-вывода.

После успешного открытия 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];

forever {
    numRead  = serial.read(buffer, 50);

    // Do whatever with the array

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

Если waitForReadyRead() возвращает false, соединение было закрыто или произошла ошибка.

Программирование с блокирующим последовательным портом радикально отличается от программирования с неблокирующим последовательным портом. Блокирующий последовательный порт не требует цикла событий и, как правило, приводит к более простому коду. Однако в приложении GUI блокирующий последовательный порт следует использовать только в потоках, не связанных с GUI, чтобы избежать зависания пользовательского интерфейса.

Для получения дополнительной информации об этих подходах обратитесь к примеру приложений.

Класс 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::UnknownBaud -1 Неизвестная скорость передачи данных. Это устаревшее значение. Оно предоставлено для работы старого исходного кода. Мы настоятельно не рекомендуем использовать его в новом коде.

См. также QSerialPort::baudRate.

перечисление QSerialPort::DataBits

Это перечисление описывает количество используемых битов данных.

Постоянная Значение Описание
QSerialPort::Data5 5 Количество битов данных в каждом символе равно 5. Используется для кодировки Baudot. Обычно имеет смысл только с устаревшим оборудованием, таким как телепринтеры.
QSerialPort::Data6 6 Количество битов данных в каждом символе равно 6. Редко используется.
QSerialPort::Data7 7 Количество битов данных в каждом символе равно 7. Используется для истинного ASCII. Обычно имеет смысл только с устаревшим оборудованием, таким как телепринтеры.
QSerialPort::Data8 8 Количество битов данных в каждом символе равно 8. Используется для большинства типов данных, так как этот размер соответствует размеру байта. Почти повсеместно используется в новых приложениях.
QSerialPort::UnknownDataBits -1 Неизвестное количество битов. Это значение устарело. Оно предоставляется для совместимости со старым кодом. Сильно не рекомендуется использовать в новом коде.

См. также QSerialPort::dataBits.

enum QSerialPort::Directionflags QSerialPort::Directions

Этот перечисление описывает возможные направления передачи данных.

Примечание: Это перечисление используется для настройки скорости передачи данных устройства отдельно для каждого направления на некоторых операционных системах (например, POSIX-подобных).

Постоянная Значение Описание
QSerialPort::Input 1 Направление ввода.
QSerialPort::Output 2 Направление вывода.
QSerialPort::AllDirections Input | Output Одновременное в двух направлениях.

Тип Directions является псевдонимом для QFlags<Direction>. Он хранит комбинацию значений Direction, объединённую по оператору OR.

enum QSerialPort::FlowControl

Это перечисление описывает используемый режим управления потоком.

Постоянная Значение Описание
QSerialPort::NoFlowControl 0 Отсутствует управление потоком.
QSerialPort::HardwareControl 1 Аппаратное управление потоком (RTS/CTS).
QSerialPort::SoftwareControl 2 Программное управление потоком (XON/XOFF).
QSerialPort::UnknownFlowControl -1 Неизвестный режим управления потоком. Это значение устарело. Оно предоставляется для совместимости со старым кодом. Сильно не рекомендуется использовать в новом коде.

См. также QSerialPort::flowControl.

enum QSerialPort::Parity

Это перечисление описывает используемый метод чётности.

Постоянная Значение Описание
QSerialPort::NoParity 0 Нет бита чётности. Это наиболее распространённая настройка чётности. Обнаружение ошибок выполняется протоколом связи.
QSerialPort::EvenParity 2 Количество единиц в каждом символе, включая бит чётности, всегда чётное.
QSerialPort::OddParity 3 Количество единиц в каждом символе, включая бит чётности, всегда нечётное. Это гарантирует, что в каждом символе происходит хотя бы одна смена состояния.
QSerialPort::SpaceParity 4 Чётность «пробел». Бит чётности передаётся в состоянии сигнала «пробел». Не предоставляет информацию об обнаружении ошибок.
QSerialPort::MarkParity 5 Чётность «маркер». Бит чётности всегда устанавливается в состояние сигнала «маркер» (логическая 1). Не предоставляет информацию об обнаружении ошибок.
QSerialPort::UnknownParity -1 Неизвестная чётность. Это значение устарело. Оно предоставляется для совместимости со старым кодом. Сильно не рекомендуется использовать в новом коде.

См. также QSerialPort::parity.

enum QSerialPort::PinoutSignalflags QSerialPort::PinoutSignals

Это перечисление описывает возможные сигналы разъёма RS-232.

Постоянная Значение Описание
QSerialPort::NoSignal 0x00 Нет активного сигнала линии
QSerialPort::TransmittedDataSignal 0x01 TxD (Передаваемые данные). Это значение устарело. Оно предоставляется для совместимости со старым кодом. Сильно не рекомендуется использовать в новом коде.
QSerialPort::ReceivedDataSignal 0x02 RxD (Принятые данные). Это значение устарело. Оно предоставляется для совместимости со старым кодом. Сильно не рекомендуется использовать в новом коде.
QSerialPort::DataTerminalReadySignal 0x04 DTR (Готовность терминала данных).
QSerialPort::DataCarrierDetectSignal 0x08 DCD (Обнаружение несущей данных).
QSerialPort::DataSetReadySignal 0x10 DSR (Готовность набора данных).
QSerialPort::RingIndicatorSignal 0x20 RNG (Указатель кольца).
QSerialPort::RequestToSendSignal 0x40 RTS (Запрос на передачу).
QSerialPort::ClearToSendSignal 0x80 CTS (Готов к передаче).
QSerialPort::SecondaryTransmittedDataSignal 0x100 STD (Дополнительные передаваемые данные).
QSerialPort::SecondaryReceivedDataSignal 0x200 SRD (Дополнительные принимаемые данные).

Тип PinoutSignals является псевдонимом для QFlags<PinoutSignal>. Он хранит комбинацию значений PinoutSignal, объединённую по оператору OR.

См. также pinoutSignals(), QSerialPort::dataTerminalReady и QSerialPort::requestToSend.

enum QSerialPort::SerialPortError

Это перечисление описывает ошибки, которые могут содержаться в свойстве QSerialPort::error.

Постоянная Значение Описание
QSerialPort::NoError 0 Ошибка не произошла.
QSerialPort::DeviceNotFoundError 1 Произошла ошибка при попытке открыть несуществующее устройство.
QSerialPort::PermissionError 2 Произошла ошибка при попытке открыть уже открытое устройство другим процессом или пользователем, у которого недостаточно разрешений и учетных данных для открытия.
QSerialPort::OpenError 3 Произошла ошибка при попытке открыть уже открытое устройство в этом объекте.
QSerialPort::NotOpenError 13 Эта ошибка возникает, когда выполняется операция, которая может быть успешно выполнена только в том случае, если устройство открыто. Это значение было добавлено в QtSerialPort 5.2.
QSerialPort::ParityError 4 Ошибка чётности, обнаруженная аппаратурой при чтении данных. Это значение устарело. Мы настоятельно рекомендуем избегать его использования в новом коде.
QSerialPort::FramingError 5 Ошибка кадрирования, обнаруженная аппаратурой при чтении данных. Это значение устарело. Мы настоятельно рекомендуем избегать его использования в новом коде.
QSerialPort::BreakConditionError 6 Условие разрыва, обнаруженное аппаратурой на входной линии. Это значение устарело. Мы настоятельно рекомендуем избегать его использования в новом коде.
QSerialPort::WriteError 7 Произошла ошибка ввода-вывода при записи данных.
QSerialPort::ReadError 8 Произошла ошибка ввода-вывода при чтении данных.
QSerialPort::ResourceError 9 Произошла ошибка ввода-вывода, когда ресурс стал недоступным, например, когда устройство неожиданно удалено из системы.
QSerialPort::UnsupportedOperationError 10 Запрашиваемая операция с устройством не поддерживается или запрещена активной операционной системой.
QSerialPort::TimeoutError 12 Произошла ошибка таймаута. Это значение было добавлено в QtSerialPort 5.2.
QSerialPort::UnknownError 11 Произошла неопознанная ошибка.

См. также QSerialPort::error.

enum QSerialPort::StopBits

Этот перечисление описывает количество стоп-битов, используемых.

Постоянная Значение Описание
QSerialPort::OneStop 1 1 стоп-бит.
QSerialPort::OneAndHalfStop 3 1,5 стоп-битов. Это только для платформы Windows.
QSerialPort::TwoStop 2 2 стоп-бита.
QSerialPort::UnknownStopBits -1 Неизвестное количество стоп-битов. Это значение устарело. Оно предоставляется для поддержки работы старого исходного кода. Мы настоятельно рекомендуем избегать его использования в новом коде.

См. также QSerialPort::stopBits.

Документация свойств

baudRate : qint32

Это свойство содержит скорость передачи данных для желаемого направления.

Если установка выполнена успешно или установлена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error. Для установки скорости передачи данных используйте перечисление QSerialPort::BaudRate или любое положительное значение qint32.

Примечание: Если установка выполнена до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.

Предупреждение: Флаг AllDirections поддерживается на всех платформах. Windows и Windows CE поддерживают только этот режим.

Предупреждение: Возвращает одинаковую скорость передачи данных в любом направлении на Windows, Windows CE.

Значение по умолчанию — Baud9600, т. е. 9600 бит в секунду.

Функции доступа:

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

Сигнал уведомления:

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

breakEnabled : bool

Это свойство содержит состояние линии передачи в режиме разрыва.

Возвращает true при успехе, false в противном случае. Если флаг равен true, линия передачи находится в режиме разрыва; в противном случае — в обычном режиме.

Примечание: Последовательный порт должен быть открыт перед попыткой установить или получить это свойство; в противном случае возвращает false и устанавливает код ошибки NotOpenError. Это немного необычно по сравнению с обычными настройками свойств Qt класса. Однако это особый случай, так как свойство устанавливается через взаимодействие с ядром и аппаратным обеспечением. Следовательно, два сценария нельзя полностью сравнивать друг с другом.

Это свойство было добавлено в Qt 5.5.

Функции доступа:

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

Сигнал уведомления:

void breakEnabledChanged(bool set)

dataBits : DataBits

Это свойство содержит количество бит данных в кадре.

Если установка выполнена успешно или установлена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.

Примечание: Если установка выполнена до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.

Значение по умолчанию — Data8, т. е. 8 бит данных.

Функции доступа:

DataBits dataBits() const
bool setDataBits(DataBits dataBits)

Сигнал уведомления:

void dataBitsChanged(QSerialPort::DataBits dataBits)

dataTerminalReady : bool

Это свойство содержит состояние (высокое или низкое) сигнала линии DTR.

Возвращает true при успехе, false в противном случае. Если флаг равен true, сигнал DTR установлен в высокое состояние; в противном случае — в низкое.

Примечание: Последовательный порт должен быть открыт перед попыткой установить или получить это свойство; в противном случае возвращается false, и код ошибки устанавливается в NotOpenError.

Функции доступа:

bool isDataTerminalReady()
bool setDataTerminalReady(bool set)

Сигнал уведомления:

void dataTerminalReadyChanged(bool set)

См. также pinoutSignals().

error : SerialPortError

Это свойство содержит состояние ошибки последовательного порта.

Устройство ввода-вывода возвращает код ошибки. Например, если open() возвращает false, или операция чтения/записи возвращает -1, это свойство можно использовать для определения причины, по которой операция завершилась неудачно.

Код ошибки устанавливается в значение по умолчанию QSerialPort::NoError после вызова clearError().

Функции доступа:

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

flowControl : FlowControl

Это свойство содержит желаемый режим управления потоком.

Если установка выполнена успешно или установлена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.

Примечание: Если установка выполнена до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.

Значение по умолчанию — NoFlowControl, т. е. нет управления потоком.

Функции доступа:

FlowControl flowControl() const
bool setFlowControl(FlowControl flowControl)

Сигнал уведомления:

void flowControlChanged(QSerialPort::FlowControl flow)

parity : Parity

Это свойство содержит режим проверки четности.

Если установка выполнена успешно или установлена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.

Примечание: Если установка выполнена до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.

Значение по умолчанию — NoParity, т. е. нет проверки четности.

Функции доступа:

Parity parity() const
bool setParity(Parity parity)

Сигнал уведомления:

void parityChanged(QSerialPort::Parity parity)

requestToSend : bool

Это свойство содержит состояние (высокое или низкое) сигнала линии RTS.

Возвращает true при успехе, false в противном случае. Если флаг равен true, сигнал RTS установлен в высокое состояние; в противном случае — в низкое.

Примечание: Последовательный порт должен быть открыт перед попыткой установить или получить это свойство; в противном случае возвращается false, и код ошибки устанавливается в NotOpenError.

Функции доступа:

bool isRequestToSend()
bool setRequestToSend(bool set)

Сигнал уведомления:

void requestToSendChanged(bool set)

См. также pinoutSignals().

stopBits : StopBits

Это свойство содержит количество стоповых битов в кадре.

Если установка прошла успешно или была установлена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.

Примечание: Если установка выполняется до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.

Значение по умолчанию — OneStop, т.е. 1 стоповой бит.

Функции доступа:

StopBits stopBits() const
bool setStopBits(StopBits stopBits)

Сигнал-уведомление:

void stopBitsChanged(QSerialPort::StopBits stopBits)

Документация по членам-функциям

QSerialPort::QSerialPort(QObject *parent = Q_NULLPTR)

Создает новый объект последовательного порта с заданным parent.

QSerialPort::QSerialPort(const QString &name, QObject *parent = Q_NULLPTR)

Создает новый объект последовательного порта с заданным parent для представления последовательного порта с указанным именем name.

Имя должно иметь определенный формат; см. метод setPort().

QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = Q_NULLPTR)

Создает новый объект последовательного порта с заданным parent для представления последовательного порта с указанным вспомогательным классом serialPortInfo.

[virtual] QSerialPort::~QSerialPort()

Закрывает последовательный порт, если необходимо, и затем уничтожает объект.

[virtual] bool QSerialPort::atEnd() const

Переопределено из QIODevice::atEnd().

Возвращает true, если больше нет данных, доступных для чтения; в противном случае возвращает false.

Эта функция чаще всего используется при чтении данных из последовательного порта в цикле. Например:

// This slot is connected to QSerialPort::readyRead()
void QSerialPortClass::readyReadSlot()
{
    while (!port.atEnd()) {
        QByteArray data = port.read(100);
        ....
    }
}

См. также bytesAvailable() и readyRead().

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

Этот сигнал испускается после изменения скорости передачи данных. Новая скорость передачи данных передается как baudRate, а направления — как directions.

Примечание: Сигнал уведомления для свойства baudRate.

См. также QSerialPort::baudRate.

[virtual] qint64 QSerialPort::bytesAvailable() const

Переопределено из QIODevice::bytesAvailable().

Возвращает количество входящих байтов, ожидающих чтения.

См. также bytesToWrite() и read().

[virtual] qint64 QSerialPort::bytesToWrite() const

Переопределено из QIODevice::bytesToWrite().

Возвращает количество байтов, ожидающих записи. Байты записываются, когда управление возвращается в цикл событий или когда вызывается flush().

См. также bytesAvailable() и flush().

[virtual] bool QSerialPort::canReadLine() const

Переопределено из QIODevice::canReadLine().

Возвращает true, если строка данных может быть прочитана из последовательного порта; в противном случае возвращает false.

См. также readLine().

bool QSerialPort::clear(Directions directions = AllDirections)

Удаляет все символы из буфера вывода или ввода в зависимости от заданных направлений directions. Это включает очистку внутренних буферов класса и буферов UART (драйвера). Также завершаются ожидающие операции чтения или записи. При успехе возвращает true; в противном случае возвращает false.

Примечание: Последовательный порт должен быть открыт перед попыткой очистки буферизованных данных; в противном случае возвращается false, и устанавливается код ошибки NotOpenError.

[virtual] void QSerialPort::close()

Переопределено из QIODevice::close().

Примечание: Последовательный порт должен быть открыт перед попыткой его закрытия; в противном случае устанавливается код ошибки NotOpenError.

См. также QIODevice::close().

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

Этот сигнал испускается после изменения данных в кадре. Новые данные в кадре передаются как dataBits.

Примечание: Сигнал уведомления для свойства dataBits.

См. также QSerialPort::dataBits.

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

Этот сигнал испускается после изменения состояния сигнала линии DTR (высокого или низкого). Новое состояние сигнала линии DTR передается как set.

Примечание: Сигнал уведомления для свойства dataTerminalReady.

См. также QSerialPort::dataTerminalReady.

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

Этот сигнал испускается после изменения ошибки. Новая ошибка передается как error.

Примечание: Сигнал error перегружен в этом классе. Для подключения к этому сигналу с использованием синтаксиса указателя функции необходимо указать тип сигнала в static_cast, как показано в этом примере:

connect(serialPort, static_cast<void(QSerialPort::*)(QSerialPort::SerialPortError)>(&QSerialPort::error),
    [=](QSerialPort::SerialPortError error){ /* ... */ });

Примечание: Функция-получатель для свойства error.

См. также QSerialPort::error.

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

Этот сигнал испускается после изменения режима управления потоком. Новый режим управления потоком передается как flow.

Примечание: Сигнал уведомления для свойства flowControl.

См. также QSerialPort::flowControl.

bool QSerialPort::flush()

Эта функция записывает как можно больше данных из внутреннего буфера записи в базовый последовательный порт без блокировки. Если какие-либо данные были записаны, эта функция возвращает true; в противном случае возвращает false.

Вызовите эту функцию для немедленной отправки буферизованных данных в последовательный порт. Количество успешно записанных байтов зависит от операционной системы. В большинстве случаев вызывать эту функцию необязательно, так как класс QSerialPort начнет отправку данных автоматически после возврата управления в цикл событий. В отсутствие цикла событий вызовите waitForBytesWritten() вместо этого.

Примечание: Последовательный порт должен быть открыт перед попыткой сброса любого буферизованного данных; в противном случае возвращается false, и устанавливается код ошибки NotOpenError.

См. также write() и waitForBytesWritten().

Handle QSerialPort::handle() const

Если платформа поддерживается и последовательный порт открыт, возвращает системный дескриптор последовательного порта; в противном случае возвращает -1.

Предупреждение: Эта функция предназначена только для опытных пользователей; используйте её на свой страх и риск. Кроме того, эта функция не гарантирует совместимости между версиями Qt.

Эта функция была добавлена в Qt 5.2.

[virtual] bool QSerialPort::isSequential() const

Переопределено из QIODevice::isSequential().

Всегда возвращает true. Последовательный порт является последовательным устройством.

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

Переопределено из QIODevice::open().

Открывает последовательный порт, используя OpenMode mode, и возвращает true при успехе; в противном случае возвращает false и устанавливает код ошибки, который можно получить, вызвав метод error().

Примечание: Метод возвращает false, если открытие порта прошло успешно, но не удалось установить какие-либо настройки порта. В этом случае порт автоматически закрывается, чтобы не оставить его с неправильными настройками.

Предупреждение: режим должен быть QIODevice::ReadOnly, QIODevice::WriteOnly или QIODevice::ReadWrite. Другие режимы не поддерживаются.

См. также QIODevice::OpenMode и setPort().

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

Этот сигнал излучается после изменения режима проверки чётности. Новый режим проверки чётности передаётся как parity.

Примечание: Сигнал-уведомление для свойства parity.

См. также QSerialPort::parity.

PinoutSignals QSerialPort::pinoutSignals()

Возвращает состояние сигналов линии в формате битовой карты.

Из этого результата можно определить состояние необходимого сигнала, применив маску «И», где маска — желаемое значение перечисления из QSerialPort::PinoutSignals.

Примечание: Этот метод выполняет системный вызов, гарантируя, что состояния сигналов линии возвращаются корректно. Это необходимо, когда базовая операционная система не может обеспечить надлежащие уведомления о изменениях.

Примечание: Порт должен быть открыт перед попыткой получения сигналов состояния выводов; в противном случае возвращается NoSignal и устанавливается код ошибки NotOpenError.

См. также QSerialPort::dataTerminalReady и QSerialPort::requestToSend.

QString QSerialPort::portName() const

Возвращает имя, заданное методом setPort() или переданное конструктору QSerialPort. Это имя короткое, т.е. оно извлечено и преобразовано из системного расположения устройства в памяти. Алгоритм преобразования зависит от платформы:

Платформа Краткое описание
Windows Удаляет префикс "\\.\" или "//./" из системного расположения и возвращает оставшуюся часть строки.
Windows CE Удаляет суффикс ":" из системного расположения и возвращает оставшуюся часть строки.
Unix, BSD Удаляет префикс "/dev/" из системного расположения и возвращает оставшуюся часть строки.

См. также setPortName(), setPort() и QSerialPortInfo::portName().

qint64 QSerialPort::readBufferSize() const

Возвращает размер внутреннего буфера чтения. Это ограничение на количество данных, которые клиент может получить перед вызовом методов read() или readAll().

Размер буфера чтения 0 (по умолчанию) означает, что буфер не имеет ограничений по размеру, гарантируя, что данные не будут потеряны.

См. также setReadBufferSize() и read().

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

Переопределено из QIODevice::readData().

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

Переопределено из QIODevice::readLineData().

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

Этот сигнал излучается после изменения состояния (высокий или низкий) сигнала линии RTS. Новое состояние (высокое или низкое) сигнала линии RTS передаётся как set.

Примечание: Сигнал-уведомление для свойства requestToSend.

См. также QSerialPort::requestToSend.

bool QSerialPort::sendBreak(int duration = 0)

Этот функция устарела.

Отправляет непрерывный поток нулевых битов в течение заданного периода времени duration в мс, если терминал использует асинхронные последовательные данные. При успехе возвращает true; в противном случае возвращает false.

Если duration равно нулю, то нулевые биты передаются в течение по меньшей мере 0,25 секунды, но не более 0,5 секунды.

Если duration не равно нулю, то нулевые биты передаются в течение определенного периода времени в зависимости от реализации.

Примечание: Порт должен быть открыт перед отправкой паузы; в противном случае возвращается false и устанавливается код ошибки NotOpenError.

См. также setBreakEnabled().

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().

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

Этот сигнал излучается после изменения количества стоповых битов в кадре. Новое количество стоповых битов в кадре передаётся как stopBits.

Примечание: Сигнал-уведомление для свойства stopBits.

См. также QSerialPort::stopBits.

[virtual] bool QSerialPort::waitForBytesWritten(int msecs)

Переопределено из QIODevice::waitForBytesWritten().

[virtual] bool QSerialPort::waitForReadyRead(int msecs)

Переопределено из QIODevice::waitForReadyRead().

Эта функция блокирует выполнение, пока новые данные не станут доступны для чтения и не будет выпущен сигнал readyRead(). Функция будет ожидать в течение msecs миллисекунд.

Функция возвращает true, если сигнал readyRead() выпущен и новые данные доступны для чтения; в противном случае она возвращает false (если произошла ошибка или операция истекла).

См. также waitForBytesWritten().

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

Переопределено из QIODevice::writeData().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qserialport.html

Spec-Zone.ru

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