banner
Object Detector and Ethernet Client for TCP Server on W6100-EVB-Pico. Part #2.

Статья продолжает тему использования стандартных протоколов для обмена данными между микропроцессорами (CPU) и микроконтроллерами (MCU). Тема начата ранее в публикациях: 1, 2, 3. На этот раз рассмотрим работу с платой W6100-EVB-Pico по протоколу Ethernet. На плате W6100-EVB-Pico установлен TCP сервер. Клиентом для этого сервера служит класс (в терминах ООП) в составе программы Object Detector версии 1.7.7. Как выгдядит взаимодействие клиента и сервера? Программа Object Detector распознает объекты, вычисляет вероятность их распознавания и расстояния до объектов, затем передает эти данные серверу на плате W6100-EVB-Pico. Формат передаваемых данных примерно такой: car: 0,86 distance: 2,70. Это означает, что обнаружен автомобиль с вероятностью 0,86 на расстоянии в 2 метра 70 сантиметров от камеры. Как программа на плате W6100-EVB-Pico может использовать входные данные? Это зависит от конкретной задачи, реализуемой в системе управления устройством (блоком).
Это двадцать седьмая статья из цикла "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.
1. Как запустить TCP сервер на плате W6100-EVB-Pico.
Выполните следующие действия:
  • Соедините Ethernet кабелем (коннектор RJ45) компьютер и плату разработки;
  • Cкомпилируте и загрузите программу TCP сервера на плату W6100-EVB-Pico в соответствии с инструкцией;
  • Нажмите кноку "Run" на плате W6100-EVB-Pico;
2. Как запустить программу Object Detector для работы с платой W6100-EVB-Pico.
Выполните следующие действия:
  • Загрузите файл object_detection_1_7_7.zip и распакуйте его;
  • Перейдите в каталог, созданный архиватором и распакуйте файл ObjectsDetection.zip;
  • Перейдите в папку ObjectsDetection, откройте проект в Qt Creator;
  • Убедитесь в том, что строка номер 174 в файле CMakeLists.txt не закомментирована. Строка содержит текст:
    target_compile_definitions(ObjectsDetection PRIVATE TCP_W6100_EVB_Pico);
  • Скомпилируйте, соберите и запустите проект ObjectsDetection;
  • В меню "File" выберите пункт "Open Camera";
  • Далее, в меню "File" выберите пункт "Select Protocols and Classes Name";
  • В окне "Выбор параметров" выберите интересующие вас классы объектов и установите для них CheckBox "TCP/IP";
  • Нажмите кноку "Start".
Программа автоматически подключится к TCP серверу и начнет сканировать объекты перед камерой. Если заданные пользователем объекты будут обнаружены, их параметры будут переданы на плату W6100-EVB-Pico.
3. Описание кода клиента для W6100-EVB-Pico в программе Object Detector.
Код клиента находится в файле client_tcp_w6100_evb_pico.cpp . Клиент выполняет следующие действия:
  • Получает строку (QString) от программы Object Detector с параметрами найденного объекта и отправляет ее на TCP сервер. Выполняет это функция sendToServer(const QString &dataStringPico);
  • Принимает ответ от сервера и сравнивает его с переданными данными. В случае несовпадения сформирует сообщение об ошибке и выведет его на консоль. Смотрите функцию slotReadyRead();
  • Контролирует время ответа сервера после переданных данных. Если время ответа превысит 1 секунду, сформирует сообщение об ошибке, выведет его на консоль, остановит передачу данных. Реализовано такое поведение в функции controlPico().
Клиент не передает на сервер файлы с распознанными изображениями. Для этого в составе Object Detector существует другая программа, которая включается, если закомментировать строку target_compile_definitions(ObjectsDetection PRIVATE TCP_W6100_EVB_Pico) в файле CMakeLists.txt.
Проект Object Detector можно загрузить и поблагодарить: Спасибо!  2202   2005   9442   6213   (счет в сбербанке).
Консультации через e-mail: veresov@jdesign.ru или телефон: +7 921-215-45-70.
Евгений Вересов.
01.09.2025 года.