Spec-Zone.ru › Qt 5.9

Класс QBluetoothSocket

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

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

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

перечисление SocketError { ОшибкаСокетаНеизвестна, ОшибкаСокетаОтсутствует, ОшибкаХостаНеНайден, ОшибкаСервисаНеНайден, ..., ОшибкаОперации }
перечисление SocketState { СостояниеОтсутствует, СостояниеПоискаСервиса, СостояниеПодключения, СостояниеПодключено, ..., СостояниеПрослушивания }

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

QBluetoothSocket(QBluetoothServiceInfo::Protocol socketType, QObject *parent = Q_NULLPTR)
QBluetoothSocket(QObject *parent = Q_NULLPTR)
virtual ~QBluetoothSocket()
void прервать()
void подключитьсяКСервису(const QBluetoothServiceInfo &service, OpenMode openMode = ReadWrite)
void подключитьсяКСервису(const QBluetoothAddress &address, const QBluetoothUuid &uuid, OpenMode openMode = ReadWrite)
void подключитьсяКСервису(const QBluetoothAddress &address, quint16 port, OpenMode openMode = ReadWrite)
void отключитьсяОтСервиса()
SocketError ошибка() const
QString описаниеОшибки() const
QBluetoothAddress локальныйАдрес() const
QString локальноеИмя() const
quint16 локальныйПорт() const
QBluetoothAddress адресСоединения() const
QString имяСоединения() const
quint16 портСоединения() const
QBluetooth::SecurityFlags предпочитаемыеФлагиБезопасности() const
void установитьПредпочитаемыеФлагиБезопасности(QBluetooth::SecurityFlags flags)
bool установитьДескрипторСокета(int socketDescriptor, QBluetoothServiceInfo::Protocol socketType, SocketState socketState = ConnectedState, OpenMode openMode = ReadWrite)
int дескрипторСокета() const
QBluetoothServiceInfo::Protocol типСокета() const
SocketState состояние() const

Реализованные публичные функции

virtual qint64 количествоДоступныхБайтов() const
virtual qint64 количествоБайтовДляЗаписи() const
virtual bool можноПрочитатьСтроку() const
virtual void закрыть()
virtual bool последовательный() const
  • 43 общедоступные функции, унаследованные от QIODevice
  • 32 общедоступные функции, унаследованные от QObject

Сигналы

void connected()
void disconnected()
void error(QBluetoothSocket::SocketError error)
void stateChanged(QBluetoothSocket::SocketState state)
  • 6 сигналов, унаследованных от 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(), когда соединение будет установлено.

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

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

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

перечисление 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 переходит в состояние Connected и испускает сигнал 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().

В 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 перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную вспомогательную функцию для получения указателя на функцию, как показано в данном примере:

connect(bluetoothSocket, QOverload<QBluetoothSocket::SocketError>::of(&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/qt-5.9/qbluetoothsocket.html

Spec-Zone.ru

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