Spec-Zone.ru › Qt 5.6

Класс QBluetoothSocket

Класс QBluetoothSocket обеспечивает подключение к устройству Bluetooth, на котором запущен сервер Bluetooth. Подробнее...

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

Открытые типы

enum SocketError { UnknownSocketError, NoSocketError, HostNotFoundError, ServiceNotFoundError, ..., OperationError }
enum SocketState { UnconnectedState, ServiceLookupState, ConnectingState, ConnectedState, ..., ListeningState }

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

QBluetoothSocket(QBluetoothServiceInfo::Protocol socketType, QObject *parent = Q_NULLPTR)
QBluetoothSocket(QObject *parent = Q_NULLPTR)
virtual ~QBluetoothSocket()
void abort()
void connectToService(const QBluetoothServiceInfo &service, OpenMode openMode = ReadWrite)
void connectToService(const QBluetoothAddress &address, const QBluetoothUuid &uuid, OpenMode openMode = ReadWrite)
void connectToService(const QBluetoothAddress &address, quint16 port, OpenMode openMode = ReadWrite)
void disconnectFromService()
SocketError error() const
QString errorString() const
QBluetoothAddress localAddress() const
QString localName() const
quint16 localPort() const
QBluetoothAddress peerAddress() const
QString peerName() const
quint16 peerPort() const
QBluetooth::SecurityFlags preferredSecurityFlags() const
void setPreferredSecurityFlags(QBluetooth::SecurityFlags flags)
bool setSocketDescriptor(int socketDescriptor, QBluetoothServiceInfo::Protocol socketType, SocketState socketState = ConnectedState, OpenMode openMode = ReadWrite)
int socketDescriptor() const
QBluetoothServiceInfo::Protocol socketType() const
SocketState state() const

Переопределённые открытые функции

virtual qint64 bytesAvailable() const
virtual qint64 bytesToWrite() const
virtual bool canReadLine() const
virtual void close()
virtual bool isSequential() const
  • 33 открытые функции, унаследованные от QIODevice
  • 31 открытые функции, унаследованные от QObject

Сигналы

void connected()
void disconnected()
void error(QBluetoothSocket::SocketError error)
void stateChanged(QBluetoothSocket::SocketState state)
  • 4 сигнала, унаследованные от QIODevice
  • 2 сигнала, унаследованные от QObject

Защищённые функции

void doDeviceDiscovery(const QBluetoothServiceInfo &service, OpenMode openMode)
void setSocketError(SocketError error_)
void setSocketState(SocketState state)

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

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

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

  • 1 свойство, унаследованное от QObject
  • 1 открытый слот, унаследованный от QObject
  • 11 статических открытых членов, унаследованных от QObject

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

Класс QBluetoothSocket обеспечивает подключение к устройству Bluetooth, на котором запущен сервер Bluetooth.

QBluetoothSocket поддерживает два типа сокетов: L2CAP и RFCOMM.

L2CAP — это низкоуровневый сокет Bluetooth, ориентированный на дейтаграммы. Android не поддерживает L2CAP для сокетных подключений.

RFCOMM — это надёжный сокет, ориентированный на поток. Сокеты RFCOMM эмулируют последовательный порт RS-232.

Для создания подключения к службе Bluetooth создайте сокет соответствующего типа и вызовите connectToService(), передав адрес и номер порта Bluetooth. QBluetoothSocket отправит сигнал connected(), когда соединение будет установлено.

Если Protocol не поддерживается на платформе, вызов connectToService() отправит ошибку UnsupportedProtocolError.

END_OF_DOCUMENT_MARKER

Примечание: QBluetoothSocket не поддерживает синхронные операции чтения и записи. Функции, такие как waitForReadyRead() и waitForBytesWritten() не реализованы. Операции ввода-вывода должны выполняться с помощью readyRead(), read() и write().

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

enum QBluetoothSocket::SocketError

Этот перечисление описывает типы ошибок сокета Bluetooth.

Константа Значение Описание
QBluetoothSocket::UnknownSocketError QAbstractSocket::UnknownSocketError Произошла неизвестная ошибка.
QBluetoothSocket::NoSocketError -2 Ошибка отсутствует. Используется для тестирования.
QBluetoothSocket::HostNotFoundError QAbstractSocket::HostNotFoundError Не удалось найти удалённый хост.
QBluetoothSocket::ServiceNotFoundError QAbstractSocket::SocketAddressNotAvailableError Не удалось найти UUID службы на удалённом хосте.
QBluetoothSocket::NetworkError QAbstractSocket::NetworkError Попытка чтения или записи из сокета вернула ошибку
QBluetoothSocket::UnsupportedProtocolError 8 Протокол Protocol не поддерживается на этой платформе.
QBluetoothSocket::OperationError QAbstractSocket::OperationError Попытка операции была предпринята, когда сокет находился в состоянии, не допускающем её.

enum QBluetoothSocket::SocketState

Этот перечисление описывает состояние сокета Bluetooth.

Константа Значение Описание
QBluetoothSocket::UnconnectedState QAbstractSocket::UnconnectedState Сокет не подключён.
QBluetoothSocket::ServiceLookupState QAbstractSocket::HostLookupState Сокет запрашивает параметры подключения.
QBluetoothSocket::ConnectingState QAbstractSocket::ConnectingState Сокет пытается подключиться к устройству.
QBluetoothSocket::ConnectedState QAbstractSocket::ConnectedState Сокет подключён к устройству.
QBluetoothSocket::BoundState QAbstractSocket::BoundState Сокет привязан к локальному адресу и порту.
QBluetoothSocket::ClosingState QAbstractSocket::ClosingState Сокет подключён и будет закрыт после записи всех ожидаемых данных в сокет.
QBluetoothSocket::ListeningState QAbstractSocket::ListeningState Сокет прослушивает входящие подключения.

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

QBluetoothSocket::QBluetoothSocket(QBluetoothServiceInfo::Protocol socketType, QObject *parent = Q_NULLPTR)

Конструирует сокет Bluetooth типа socketType с parent.

QBluetoothSocket::QBluetoothSocket(QObject *parent = Q_NULLPTR)

Конструирует сокет Bluetooth с parent.

[virtual] QBluetoothSocket::~QBluetoothSocket()

Уничтожает сокет Bluetooth.

void QBluetoothSocket::abort()

Прерывает текущее подключение и сбрасывает сокет. В отличие от disconnectFromService(), эта функция немедленно закрывает сокет, отбрасывая любые ожидаемые данные в буфере записи.

Примечание: В Android, прерывание сокета требует асинхронного взаимодействия с потоками Android. Поэтому связанные сигналы disconnected() и stateChanged() отложены до завершения работы потоков.

См. также disconnectFromService() и close().

[virtual] qint64 QBluetoothSocket::bytesAvailable() const

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

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

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

[virtual] qint64 QBluetoothSocket::bytesToWrite() const

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

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

[virtual] bool QBluetoothSocket::canReadLine() const

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

Возвращает true, если можно прочитать по крайней мере одну строку из устройства

[virtual] void QBluetoothSocket::close()

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

Отключает подключение сокета к устройству.

Примечание: В Android, закрытие сокета требует асинхронного взаимодействия с потоками Android. Поэтому связанные сигналы disconnected() и stateChanged() отложены до завершения работы потоков.

void QBluetoothSocket::connectToService(const QBluetoothServiceInfo &service, OpenMode openMode = ReadWrite)

Пытается подключиться к службе, описанной в service.

Сокет открывается в заданном openMode. socketType() может измениться в зависимости от протокола, требуемого службой service.

Сокет сначала переходит в состояние ConnectingState и пытается подключиться к устройству, предоставляющему service. Если подключение установлено, QBluetoothSocket переходит в состояние ConnectedState и испускает connected().

В любой момент сокет может испустить error() для сигнализации об ошибке.

Обратите внимание, что большинство платформ требуют сопряжения перед подключением к удалённому устройству. В противном случае процесс подключения может завершиться ошибкой.

См. также state() и disconnectFromService().

void QBluetoothSocket::connectToService(const QBluetoothAddress &address, const QBluetoothUuid &uuid, OpenMode openMode = ReadWrite)

Пытается установить соединение со службой, идентифицируемой по uuid на устройстве с адресом address.

Сокет открывается в заданном openMode.

Для BlueZ сокет сначала переходит в состояние ServiceLookupState и запрашивает параметры подключения для uuid. Если параметры службы успешно получены, сокет переходит в состояние ConnectingState и пытается подключиться к address. Если подключение установлено, QBluetoothSocket переходит в состояние ConnectedState и испускает connected().

В Android подключение к службе может быть установлено непосредственно с использованием UUID удалённой службы. Поэтому для платформ не требуется состояние ServiceLookupState, а socketType() всегда устанавливается в QBluetoothServiceInfo::RfcommProtocol.

В любой момент сокет может испустить error() для сигнализации об ошибке.

Обратите внимание, что большинство платформ требуют сопряжения перед подключением к удалённому устройству. В противном случае процесс подключения может завершиться ошибкой.

См. также state() и disconnectFromService().

void QBluetoothSocket::connectToService(const QBluetoothAddress &address, quint16 port, OpenMode openMode = ReadWrite)

Пытается установить соединение с address на заданном port.

Сокет открывается в заданном openMode.

Сокет сначала переходит в состояние ConnectingState и пытается подключиться к address. Если подключение установлено, QBluetoothSocket переходит в состояние ConnectedState и испускает connected().

В любой момент сокет может испустить error() для сигнализации об ошибке.

END_OF_DOCUMENT_MARKER

В Android подключение к сервису не может быть установлено с использованием порта. Вызов этой функции выведет ServiceNotFoundError.

Обратите внимание, что большинство платформ требуют сопряжения перед подключением к удаленному устройству. В противном случае процесс подключения может завершиться неудачей.

См. также state() и disconnectFromService().

[signal] void QBluetoothSocket::connected()

Этот сигнал генерируется при установлении соединения.

См. также QBluetoothSocket::ConnectedState и stateChanged().

void QBluetoothSocket::disconnectFromService()

Попытка закрыть сокет. Если ожидаются данные для записи, QBluetoothSocket перейдет в состояние ClosingState и будет ждать, пока все данные не будут записаны. В конечном итоге он перейдет в состояние UnconnectedState и сгенерирует сигнал disconnected().

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

[signal] void QBluetoothSocket::disconnected()

Этот сигнал генерируется при отключении сокета.

См. также QBluetoothSocket::UnconnectedState и stateChanged().

[protected] void QBluetoothSocket::doDeviceDiscovery(const QBluetoothServiceInfo &service, OpenMode openMode)

Начать обнаружение устройства для service и открыть сокет с openMode. Если сокет создан с адресом устройства uuid сервиса, используйте обнаружение сервиса для поиска номера порта для подключения.

SocketError QBluetoothSocket::error() const

Возвращает последнюю ошибку.

[signal] void QBluetoothSocket::error(QBluetoothSocket::SocketError error)

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

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

connect(bluetoothSocket, static_cast<void(QBluetoothSocket::*)(QBluetoothSocket::SocketError)>(&QBluetoothSocket::error),
    [=](QBluetoothSocket::SocketError error){ /* ... */ });

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

QString QBluetoothSocket::errorString() const

Возвращает текстовую строку для отображения ошибки.

[virtual] bool QBluetoothSocket::isSequential() const

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

QBluetoothAddress QBluetoothSocket::localAddress() const

Возвращает адрес локального устройства.

Хотя на некоторых платформах могут быть различия, для гарантии возврата валидного адреса сокет обычно должен быть подключен. В частности, это справедливо для платформ, поддерживающих несколько локальных адаптеров Bluetooth.

QString QBluetoothSocket::localName() const

Возвращает имя локального устройства.

Хотя на некоторых платформах могут быть различия, для гарантии возврата валидного имени сокет обычно должен быть подключен. В частности, это справедливо для платформ, поддерживающих несколько локальных адаптеров Bluetooth.

quint16 QBluetoothSocket::localPort() const

Возвращает номер порта локального сокета, если он доступен, в противном случае возвращает 0. Хотя на некоторых платформах могут быть различия, для гарантии возврата валидного номера порта сокет обычно должен быть подключен.

В Android и macOS эта функция не поддерживается и возвращает 0.

QBluetoothAddress QBluetoothSocket::peerAddress() const

Возвращает адрес устройства-получателя.

QString QBluetoothSocket::peerName() const

Возвращает имя устройства-получателя.

quint16 QBluetoothSocket::peerPort() const

Возвращает номер порта сокета получателя, если он доступен, в противном случае возвращает 0. В Android эта функция не поддерживается.

QBluetooth::SecurityFlags QBluetoothSocket::preferredSecurityFlags() const

Возвращает параметры безопасности, используемые для первой попытки подключения.

Параметры безопасности могут быть пересмотрены между двумя сторонами во время или после установления соединения. Если такие изменения произошли, они не отражаются в значении этого флага.

В macOS этот флаг всегда устанавливается в QBluetooth::Secure.

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

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

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

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

void QBluetoothSocket::setPreferredSecurityFlags(QBluetooth::SecurityFlags flags)

Устанавливает предпочтительные параметры безопасности для попытки подключения в flags. Это значение включается при вызове connectToService(). Поэтому для изменения этого параметра для существующего соединения требуется повторное подключение.

В Bluez этот параметр по умолчанию установлен в QBluetooth::Authorization.

В macOS это значение игнорируется, так как платформа не допускает доступа к параметрам безопасности сокета. Тем не менее, платформа по умолчанию предпочитает безопасные/зашифрованные соединения, и поэтому эта функция всегда возвращает QBluetooth::Secure.

Android поддерживает только два уровня безопасности (безопасный и небезопасный). Если этот флаг установлен в QBluetooth::NoSecurity, объект сокета не будет использовать проверку подлинности или шифрование. Любая другая комбинация флагов безопасности запустит безопасное соединение Bluetooth. По умолчанию этот флаг установлен в QBluetooth::Secure.

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

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

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

bool QBluetoothSocket::setSocketDescriptor(int socketDescriptor, QBluetoothServiceInfo::Protocol socketType, SocketState socketState = ConnectedState, OpenMode openMode = ReadWrite)

Устанавливает сокет для использования socketDescriptor с типом socketType, который находится в состоянии socketState и режиме openMode.

Возвращает true при успехе

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

[protected] void QBluetoothSocket::setSocketError(SocketError error_)

Устанавливает тип последней ошибки в error_.

[protected] void QBluetoothSocket::setSocketState(SocketState state)

Устанавливает состояние сокета в state.

int QBluetoothSocket::socketDescriptor() const

Возвращает дескриптор сокета, специфичный для платформы, если он доступен. Эта функция возвращает -1, если дескриптор недоступен или произошла ошибка.

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

QBluetoothServiceInfo::Protocol QBluetoothSocket::socketType() const

Возвращает тип сокета. Сокет автоматически адаптируется к протоколу, предлагаемому удаленным сервисом.

Android поддерживает только сокеты на основе RFCOMM.

SocketState QBluetoothSocket::state() const

Возвращает текущее состояние сокета.

[signal] void QBluetoothSocket::stateChanged(QBluetoothSocket::SocketState state)

Этот сигнал генерируется при изменении состояния сокета на state.

См. также connected(), disconnected(), state() и QBluetoothSocket::SocketState.

[virtual protected] qint64 QBluetoothSocket::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/qbluetoothsocket.html

Spec-Zone.ru

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