TouchGFX: как обрабатывать инструкции по нажатой/ненажатой кнопке

Как я могу обработать кнопку в TouchGFX, которая позволяет мне включать светодиод при нажатии и выключать его, когда я отпускаю кнопку? Следующий код работает, но он включает / выключает светодиод каждый раз, когда вы касаетесь / не касаетесь экрана...

void Screen1View::handleClickEvent(const ClickEvent& event)
{
  if((event.getType() == ClickEvent::PRESSED))
  {

    HAL_GPIO_WritePin(LD1_GPIO_Port, LD1_Pin, GPIO_PIN_SET);
    HAL_Delay(50);
  }
 if((event.getType() == ClickEvent::RELEASED))
  {
     HAL_GPIO_WritePin(LD1_GPIO_Port, LD1_Pin, GPIO_PIN_RESET);
  }
}

Если я использую функцию flexButtonCallbackHandler(const touchgfx::AbstractButtonContainer& event), я могу определить, была ли нажата кнопка1, кнопка2 и т. д., но я не могу определить, была ли кнопка отпущена... Любое предложение?


person lafodolio    schedule 03.02.2021    source источник


Ответы (1)


Стандартный класс Button в TouchGFX срабатывает только на clicked. Вы можете проверить исходный код AbstractButton::handleClickEvent(), чтобы увидеть, как он работает. Button наследуется от этого класса и добавляет функциональные возможности, такие как кликнутые/отпущенные изображения.

Чтобы делать то, что вы хотите, вы должны создать новый класс, реализующий желаемое поведение. Проверяя исходный код для AbstractButton, это должно быть прямолинейно, чтобы выполнить обратный вызов как для событий clicked, так и для Release.

person zrrbite    schedule 27.03.2021