banner
Object Detector 1.8.1. Error Handling in CoAP Client.

В состав клиента CoAP (версия Object Detector 1.8.1) добавлены функции обработки ошибок. Начнем с фатальных ошибок, при которых работа клиента CoAP невозможна. Понятно, что такие ошибки следует своевременно обнаруживать и сообщать о них пользователю. Рассмотрим случай, когда сервер CoAP недоступен. При создании клиента CoAP для подключения к серверу используются следующие параметры:
  • const QString host = "coap.me";
  • const int port = 5683;
  • const QString path = "/.well-known/core";
  • const QString resource = "/validate";
После создания клиент CoAP попытается получить доступ к серверу CoAP. Если сервер не отвечает, программа сообщит пользователю о критической ошибке и перейдет в состояние, при котором операцию подключения можно повторить или попытаться запустить клиента с другим протоколом связи, например, HTTP. На рисунке 1 приведен фрагмент кода, выполняющий часть указанных действий.
Ошибки типа QtCoap::Error::TimeOut. При обнаружении ошибки этого типа клиент попытается ее исправить путем повторной отправки данных на сервер. Число таких повторов задается константой maximum_number_errors в файле coap.h. При повторных попытках передачи данных пользователю в GUI интерфейс ничего не сообщается, информация выводится в log файл или терминал. Пример показан на рисунке 2. Если ошибку удается исправить, то клиент продолжит работу в нормальном (штатном) режиме.
В случае если число попыток исправления ошибки достигнет значения заданного константой maximum_number_errors и ошибку исправить не удается, программа выведет окно, показанное на рисуноке 3. Это окно предлагает пользователю несколько вариантов дальнейших действий. При нажатии на кнопку "Ignore" программа пропустит текущую запись и попытается отправить следующую. Если пользователь установит CheckBox и нажмет кнопку "Ignore", программа будет пытаться передавать следующие по порядку данные, игнорируя возможные ошибки до тех пор, пока число пропущенных записей не достигнет значения заданное константой max_fatal_errors_coap. Если ошибку удастся исправить, то клиент продолжит передачу данных на сервер в нормальном режиме. Если нет, то окно будет выведено повторно. Работу клиента CoAP можно завершить нажав кнопку "Abort".
Это тридцать пятая статья из цикла "Real-Time Object Recognition". Первые тридцать четыре опубликованы здесь: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 и 34

1. Обработка критических ошибок в CoAP клиенте.

Рисунок 1.


2. Исправление ошибок типа QtCoap::Error::TimeOut.

Автоматическое исправление ошибок.

Рисунок 2.

3. Игнорирование (пропуск) ошибок.

Рисунок 3.

Object Detector 1.8.1 скомпилирован и собран в операционной системе macOS Tahoe 26.3.

Проект Object Detector 1.8.1 можно загрузить и поблагодарить: Спасибо!  2202   2005   9442   6213   (счет в сбербанке).
Консультации через e-mail: veresov@jdesign.ru или телефон: +7 921-215-45-70.
Евгений Вересов.
07.09.2026 года.