Класс QCanBusDevice
Класс QCanBusDevice — это интерфейсный класс для шины CAN. Подробнее...
| Заголовок: | #include <QCanBusDevice> |
| qmake: | QT += serialbus |
| С момента: | Qt 5.8 |
| Наследуется от: | QObject |
Типы
| класс | Фильтр |
| перечисление | Состояние устройства шины CAN { Состояние отключения, Состояние подключения, Состояние соединения, Состояние закрытия } |
| перечисление | Ошибка шины CAN { Нет ошибок, Ошибка чтения, Ошибка записи, Ошибка подключения, Ошибка конфигурации, Неизвестная ошибка } |
| перечисление | Ключ конфигурации { Ключ необработанного фильтра, Ключ фильтра ошибок, Ключ петли обратной связи, Ключ приема собственного сообщения, ..., Пользовательский ключ } |
Открытые функции
| QCanBusDevice(QObject *parent = nullptr) | |
| QVector<int> | configurationKeys() const |
| QVariant | configurationParameter(int key) const |
| bool | connectDevice() |
| void | disconnectDevice() |
| CanBusError | error() const |
| QString | errorString() const |
| qint64 | доступные_кадры() const |
| qint64 | кадры_на_запись() const |
| virtual QString | interpretErrorFrame(const QCanBusFrame &frame) = 0 |
| QCanBusFrame | readFrame() |
| virtual void | setConfigurationParameter(int key, const QVariant &value) |
| CanBusDeviceState | state() const |
| virtual bool | waitForFramesReceived(int msecs) |
| virtual bool | waitForFramesWritten(int msecs) |
| virtual bool | writeFrame(const QCanBusFrame &frame) = 0 |
- 32 открытых функции, унаследованные от QObject
Сигналы
| void | errorOccurred(QCanBusDevice::CanBusError error) |
| void | framesReceived() |
| void | framesWritten(qint64 framesCount) |
| void | stateChanged(QCanBusDevice::CanBusDeviceState state) |
- 2 сигнала, унаследованные от QObject
Защищенные функции
| virtual void | close() = 0 |
| QCanBusFrame | dequeueOutgoingFrame() |
| void | enqueueOutgoingFrame(const QCanBusFrame &newFrame) |
| void | enqueueReceivedFrames(const QVector<QCanBusFrame> &newFrames) |
| bool | hasOutgoingFrames() const |
| virtual bool | open() = 0 |
| void | setError(const QString &errorText, QCanBusDevice::CanBusError errorId) |
| void | setState(QCanBusDevice::CanBusDeviceState newState) |
- 9 защищенных функций, унаследованных от QObject
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 11 статических открытых членов, унаследованных от QObject
Подробное описание
Класс QCanBusDevice — это интерфейсный класс для шины CAN.
QCanBusDevice взаимодействует с плагином CAN, предоставляя пользователям удобный API. Плагин CAN должен быть указан при создании объекта.
Документация по типам членов
перечисление QCanBusDevice::Состояние устройства шины CAN
Это перечисление описывает все возможные состояния устройства.
| Постоянная | Значение | Описание |
|---|---|---|
QCanBusDevice::UnconnectedState |
0 |
Устройство отключено. |
QCanBusDevice::ConnectingState |
1 |
Устройство подключается. |
QCanBusDevice::ConnectedState |
2 |
Устройство подключено к шине CAN. |
QCanBusDevice::ClosingState |
3 |
Устройство закрывается. |
перечисление QCanBusDevice::Ошибка шины CAN
Это перечисление описывает все возможные условия ошибок.
| Постоянная | Значение | Описание |
|---|---|---|
QCanBusDevice::NoError |
0 |
Ошибок не возникло. |
QCanBusDevice::ReadError |
1 |
Во время операции чтения произошла ошибка. |
QCanBusDevice::WriteError |
2 |
Во время операции записи произошла ошибка. |
QCanBusDevice::ConnectionError |
3 |
При попытке открыть плагин произошла ошибка. |
QCanBusDevice::ConfigurationError |
4 |
При попытке установить параметр конфигурации произошла ошибка. |
QCanBusDevice::UnknownError |
5 |
Произошла неизвестная ошибка. |
перечисление QCanBusDevice::Ключ конфигурации
Это перечисление описывает возможные параметры конфигурации для подключения к шине CAN.
| Константа | Значение | Описание |
|---|---|---|
QCanBusDevice::RawFilterKey |
0 |
Данная конфигурация определяет тип кадров CAN-шины, которые принимает текущее устройство. Ожидаемое значение — QList<QCanBusDevice::Filter>. Передача пустого списка очищает все ранее установленные фильтры, включая фильтры по умолчанию. Дополнительные сведения см. в QCanBusDevice::Filter. |
QCanBusDevice::ErrorFilterKey |
1 |
Этот ключ определяет тип ошибки, который должен быть передан через текущее соединение. Соответствующее значение должно быть типа QCanBusFrame::FrameErrors. |
QCanBusDevice::LoopbackKey |
2 |
Этот ключ определяет, должен ли CAN-устройство работать в режиме петли обратной связи. Режим петли обратной связи означает, что всякий раз, когда кадр CAN передается по CAN-шине, локальное эхо этого кадра отправляется всем приложениям, подключенным к этому CAN-устройству. Ожидаемое значение для этого ключа — bool. |
QCanBusDevice::ReceiveOwnKey |
3 |
Этот ключ определяет, получает ли это CAN-устройство собственные отправляемые кадры. Это может использоваться для проверки успешности передачи. Ожидаемое значение для этого ключа — bool. |
QCanBusDevice::BitRateKey |
4 |
Этот ключ определяет скорость передачи CAN в битах в секунду. При использовании CAN FD, полезная нагрузка может передаваться с более высокой скоростью передачи данных, если QCanBusFrame::hasBitrateSwitch() установлено. В этом случае, QCanBusDevice::BitRateKey используется только для фазы арбитража CAN-ID. См. также QCanBusDevice::DataBitRateKey |
QCanBusDevice::CanFdKey |
5 |
Этот ключ определяет, должны ли быть включены отправка и получение кадров CAN FD. Ожидаемое значение для этого ключа — bool. |
QCanBusDevice::DataBitRateKey |
6 |
Этот ключ определяет диапазон, в котором начинаются пользовательские ключи. Его наиболее распространенное назначение — разрешить платформенно-специфические параметры конфигурации. |
QCanBusDevice::UserKey |
30 |
Этот ключ определяет диапазон, в котором начинаются пользовательские ключи. Его наиболее распространенное назначение — разрешить платформенно-специфические параметры конфигурации. |
См. также configurationParameter().
Документация по функциям-членам
QCanBusDevice::QCanBusDevice(QObject *parent = nullptr)
Создает устройство последовательной шины с указанным parent.
[pure virtual protected] void QCanBusDevice::close()
Эта функция отвечает за закрытие соединения CAN-шины. Реализация должна гарантировать, что состояние экземпляра state() установлено в QCanBusDevice::UnconnectedState.
Самая важная задача этой функции — закрыть сокет с устройством CAN и вызвать QCanBusDevice::setState().
См. также disconnectDevice().
QVector<int> QCanBusDevice::configurationKeys() const
Возвращает список ключей, используемых соединением CAN-шины.
Значение ключей эквивалентно ConfigurationKey. Если ключ не указан, используется значение по умолчанию для соответствующего ключа на платформе.
QVariant QCanBusDevice::configurationParameter(int key) const
Возвращает текущее значение, назначенное ключу ConfigurationKey key; в противном случае — некорректный QVariant.
См. также setConfigurationParameter() и configurationKeys().
bool QCanBusDevice::connectDevice()
Подключает устройство к CAN-шине. Возвращает true при успехе; в противном случае false.
Эта функция вызывает open() в рамках своей реализации.
См. также disconnectDevice().
[protected] QCanBusFrame QCanBusDevice::dequeueOutgoingFrame()
Возвращает следующий QCanBusFrame из внутреннего списка исходящих кадров; в противном случае возвращает некорректный QCanBusFrame. Возвращаемый кадр удаляется из внутреннего списка.
void QCanBusDevice::disconnectDevice()
Отключает устройство от CAN-шины.
Эта функция вызывает close() в рамках своей реализации.
Примечание: Эта функция должна вызываться только если connectDevice() вернула true.
См. также connectDevice().
[protected] void QCanBusDevice::enqueueOutgoingFrame(const QCanBusFrame &newFrame)
Добавляет newFrame в внутренний список исходящих кадров, к которому можно получить доступ с помощью writeFrame().
Подклассы должны вызывать эту функцию при записи нового кадра.
[protected] void QCanBusDevice::enqueueReceivedFrames(const QVector<QCanBusFrame> &newFrames)
Добавляет newFrames в внутренний список кадров, к которому можно получить доступ с помощью readFrame() и испускает сигнал framesReceived().
Подклассы должны вызывать эту функцию при получении кадров.
CanBusError QCanBusDevice::error() const
Возвращает последнюю ошибку, которая произошла. Значение ошибки всегда устанавливается в последнюю произошедшую ошибку и никогда не сбрасывается.
См. также setError() и errorString().
[signal] void QCanBusDevice::errorOccurred(QCanBusDevice::CanBusError error)
Этот сигнал излучается при возникновении ошибки типа error.
QString QCanBusDevice::errorString() const
Возвращает удобочитаемое описание последней ошибки устройства, которая произошла.
См. также error().
qint64 QCanBusDevice::framesAvailable() const
Возвращает количество доступных кадров. Если кадры недоступны, эта функция возвращает 0.
См. также readFrame().
[signal] void QCanBusDevice::framesReceived()
Этот сигнал излучается, когда получено один или несколько кадров. Кадры должны быть считаны с помощью readFrame() и framesAvailable().
qint64 QCanBusDevice::framesToWrite() const
Для буферизованных устройств эта функция возвращает количество кадров, ожидающих записи. Для устройств без буферизации эта функция всегда возвращает ноль.
Примечание: Может быть дополнительный буферизация в драйвере CAN и слое аппаратного обеспечения CAN. Поэтому, если эта функция возвращает ноль, это не означает, что все кадры CAN уже записаны в CAN-шину.
См. также writeFrame().
[signal] void QCanBusDevice::framesWritten(qint64 framesCount)
Этот сигнал излучается каждый раз, когда пакет кадров был записан в CAN-шину. Аргумент framesCount устанавливается в количество кадров, которые были записаны в этом пакете.
[protected] bool QCanBusDevice::hasOutgoingFrames() const
Возвращает true если внутренний список исходящих кадров не пуст; в противном случае возвращает false.
[pure virtual] QString QCanBusDevice::interpretErrorFrame(const QCanBusFrame &frame)
Интерпретирует frame как кадр ошибки и возвращает удобочитаемое описание ошибки.
Если frame не является кадром ошибки, возвращаемая строка пустая.
[pure virtual protected] bool QCanBusDevice::open()
Эта функция вызывается функцией connectDevice(). Подклассы должны предоставить реализацию, которая возвращает true если подключение к шине CAN было установлено; в противном случае false. Реализация QCanBusDevice гарантирует, что при входе в эту функцию состояние устройства state() уже установлено в QCanBusDevice::ConnectingState.
Реализация должна гарантировать, что при успехе состояние экземпляра state() установлено в QCanBusDevice::ConnectedState; в противном случае QCanBusDevice::UnconnectedState. Для установки нового состояния устройства необходимо использовать функцию setState().
Пользовательская реализация отвечает за открытие сокета, создание потенциально необходимого QSocketNotifier и применение пользовательских и стандартных параметров конфигурации QCanBusDevice::configurationParameter.
См. также connectDevice().
QCanBusFrame QCanBusDevice::readFrame()
Возвращает следующий QCanBusFrame из очереди; в противном случае возвращает пустой QCanBusFrame. Возвращаемый фрейм удаляется из очереди.
Очередь работает по принципу FIFO.
См. также framesAvailable().
[virtual] void QCanBusDevice::setConfigurationParameter(int key, const QVariant &value)
Устанавливает параметр конфигурации key для подключения к шине CAN на значение value. Возможные ключи представлены в перечислении ConfigurationKey.
Параметр может быть снят, установив недопустимое значение QVariant. Снятие параметра подразумевает сброс конфигурации к её значению по умолчанию.
Примечание: В большинстве случаев изменения конфигурации вступают в силу только после повторного подключения.
См. также configurationParameter().
[protected] void QCanBusDevice::setError(const QString &errorText, QCanBusDevice::CanBusError errorId)
Устанавливает удобочитаемое описание последней ошибки устройства на errorText. errorId классифицирует тип ошибки.
Реализации шины CAN должны использовать эту функцию для обновления состояния ошибки устройства.
См. также error() и errorOccurred().
[protected] void QCanBusDevice::setState(QCanBusDevice::CanBusDeviceState newState)
Устанавливает состояние устройства на newState. Реализации шины CAN должны использовать эту функцию для обновления состояния устройства.
См. также state().
CanBusDeviceState QCanBusDevice::state() const
Возвращает текущее состояние устройства.
См. также setState() и stateChanged().
[signal] void QCanBusDevice::stateChanged(QCanBusDevice::CanBusDeviceState state)
Этот сигнал испускается каждый раз, когда состояние устройства меняется. Новое состояние представлено значением state.
См. также setState() и state().
[virtual] bool QCanBusDevice::waitForFramesReceived(int msecs)
Задерживает выполнение, пока новые кадры не будут доступны для чтения, и не будет испущен сигнал framesReceived(), или пока не пройдёт msecs миллисекунд. Если msecs равно -1, эта функция не будет ожидать истечения времени.
Возвращает true если новые кадры доступны для чтения и сигнал framesReceived() испущен; в противном случае возвращает false (если операция истекла или произошла ошибка).
Примечание: Эта функция запустит локальный цикл обработки событий. Это может привести к ситуациям, когда другие слоты приложения могут быть вызваны в то время, когда выполнение этой функции блокировано. Чтобы избежать проблем, сигналы для этого класса не должны быть подключены к слотам. Аналогично, эта функция никогда не должна вызываться в ответ на сигналы framesReceived() или errorOccurred().
См. также waitForFramesWritten().
[virtual] bool QCanBusDevice::waitForFramesWritten(int msecs)
Для буферизованных устройств эта функция ожидает, пока все буферизованные кадры не будут записаны в устройство и не будет испущен сигнал framesWritten(), или пока не пройдёт msecs миллисекунд. Если msecs равно -1, эта функция не будет ожидать истечения времени. Для устройств без буферизации она возвращается сразу с false, так как writeFrame() не требует буфера записи.
Возвращает true если сигнал framesWritten() испущен; в противном случае возвращает false (т.е. если операция истекла или произошла ошибка).
Примечание: Эта функция запустит локальный цикл обработки событий. Это может привести к ситуациям, когда другие слоты приложения могут быть вызваны в то время, когда выполнение этой функции блокировано. Чтобы избежать проблем, сигналы для этого класса не должны быть подключены к слотам. Аналогично, эта функция никогда не должна вызываться в ответ на сигналы framesWritten() или errorOccurred().
См. также waitForFramesReceived().
[pure virtual] bool QCanBusDevice::writeFrame(const QCanBusFrame &frame)
Записывает frame на шину CAN и возвращает true при успехе; в противном случае false.
На некоторых платформах фрейм может быть помещён в очередь, и возвращаемое значение может указывать только на успешную вставку в очередь. Фрейм фактически будет отправлен позже. Поэтому сигнал framesWritten() является окончательным подтверждением того, что фрейм был передан транспортному слою. Если произошла ошибка, испускается сигнал errorOccurred().
Согласно спецификации шины CAN, кадры типа remote transfer request (RTR) не имеют полезной нагрузки, но имеют длину от 0 до 8 (включительно). Эта длина указывает ожидаемую длину полезной нагрузки ответа от удалённой стороны. Поэтому при отправке кадра RTR с помощью этой функции может потребоваться установить произвольную полезную нагрузку на frame. Длина произвольной полезной нагрузки — это то, что устанавливается как ожидаемая длина кадра RTR.
См. также QCanBusFrame::setPayload().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qcanbusdevice.html