TouchGFXを使おう5~Lチカ編~の続きです。
今回は、Modelにプログラムを記述し、呼び出すプログラムにします。
今回のプログラムはModelにプログラムを集約できる反面、presenterとviewを繋げる必要があり、コードが増えます。
画面製作
新規プロジェクトを作成し、ボタン を 2個作成 します。
今回は、LED ON と LED OFF の二つにします。
インタラクションの設定
Interaction を以下のように設定します。
Interaction1 | Interaction2 | |
---|---|---|
Trigger | Button is clicked | Button is clicked |
Choose clicked source | On_switch | Off_switch |
Action | Call new virtual function | new virtual function |
Function Name | On_Switch_func | Off_Switch_func |
ピン設定
STM32CubeIDEを立ち上げた状態で STM32CubeIDEフォルダ の projectファイル を ダブルクリック しプロジェクトを インポート します。
OK を クリック します。
立ち上げ後、iocファイル から LED につながる PC2 ピンを GPIO Output にし Generation します。
Warning が出ますが Yes で進みます。
TouchGFXでも変更されたことが表示されますので Yes を クリック します。
model
model.hpp に On_LED と Off_LED を 追加 します。
void On_LED();
void Off_LED();
model.cpp に On_LED と Off_LED を 追加 します。
ヘッダー
#ifndef SIMULATOR
#include "stm32h7xx_hal.h"
#endif
プログラム内
void Model::On_LED()
{
#ifndef SIMULATOR
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET);
#endif
}
void Model::Off_LED()
{
#ifndef SIMULATOR
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_SET);
#endif
}
Screen1View
Screen1View.hpp に関数を宣言します。
protected:
virtual void On_Switch_func();
virtual void Off_Switch_func();
Screen1View.cppにOn_Switch_funcとOff_Switch_funcを追加します。
void Screen1View::On_Switch_func()
{
presenter -> onlight();
#ifndef SIMULATOR
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_3);
#endif
}
void Screen1View::Off_Switch_func()
{
presenter -> offlight();
}
Screen1presenter
Model と Screen1View を繋げるコードを Screen1presenter に 追加 します。
最初に Screen1presenter.hpp に関数を宣言します。
void onlight();
void offlight();
Screen1presenter.cpp に 関数 を 追加 します。
void Screen1Presenter::onlight()
{
model -> On_LED();
}
void Screen1Presenter::offlight()
{
model -> Off_LED();
}
コンパイルすることでLEDの点滅が出来るようになります。
TouchGFXを使おう7~ハードウェアボタン編~に続きます。