반응형

https://youtube.com/live/BoOS2gsGBY0

[STM32#35] LCD가 내장된 STM32F746g-DISCO보드로 TOUCHGFX를 시작하는 방법 알아보기!(녹칸다 내맘대로 STM32)

심심한녹칸다의 내맘대로 STM32시리즈이다!

STM32시리즈의 모든 자료는 구글 슬라이드에 작성하고 모두에게 공유되어있음!
https://docs.google.com/presentation/d/1myA5iYbjuKsLWLqtRLKAiRfwUwvqB1d1RGjiMIIgp3I/edit?slide=id.g3c8649eefc9_1_37#slide=id.g3c8649eefc9_1_37

이제부터 touchgfx를 해보는 것입니다~!

1.Touchgfx를 이용해서 button 2개와 textarea 1개를 생성하고 버튼1을 누르면 NOCKANDA라고 textarea에 출력하고 버튼2를 누르면 SUBSCRIBE라고 출력하시오!


2.위젯중에 토글버튼을 하나 추가하고 토글버튼의 상태가 바뀔때 ON상태면 circleProgress1의 값이 50이 되고 OFF상태면 0이되도록 하시오!

//Screen1View.hpp
#ifndef SCREEN1VIEW_HPP
#define SCREEN1VIEW_HPP
#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
#include <gui/screen1_screen/Screen1Presenter.hpp>
class Screen1View : public Screen1ViewBase
{
public:
   Screen1View();
   virtual ~Screen1View() {}
   virtual void setupScreen();
   virtual void tearDownScreen();
   virtual void test1(); //나 test1 오버라이딩 할꺼야!
protected:
};
#endif // SCREEN1VIEW_HPP
//Screen1View.cpp
#include <gui/screen1_screen/Screen1View.hpp>
Screen1View::Screen1View()
{
}
void Screen1View::setupScreen()
{
   Screen1ViewBase::setupScreen();
}
void Screen1View::tearDownScreen()
{
   Screen1ViewBase::tearDownScreen();
}
void Screen1View::test1(){
	if(!toggleButton1.getState()){
		//토글버튼이 ON이면 circleProgress1에 50출력
		circleProgress1.setValue(50);
	}else{
		//토글버튼이 OFF이면 circleProgress1에 0출력
		circleProgress1.setValue(0);
	}
}


3.위젯중에 슬라이더를 추가하고 0~100사이의 값으로 바뀌는 슬라이드의 현재값을 textarea1에 출력하시오!

//Screen1View.hpp
#ifndef SCREEN1VIEW_HPP
#define SCREEN1VIEW_HPP
#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
#include <gui/screen1_screen/Screen1Presenter.hpp>
class Screen1View : public Screen1ViewBase
{
public:
   Screen1View();
   virtual ~Screen1View() {}
   virtual void setupScreen();
   virtual void tearDownScreen();
   //textarea에 값을 출력하기 위한 중간변수
   touchgfx::Unicode::UnicodeChar testTextAreaBuffer[10];
   //슬라이더 값이 바뀌면 호출되는 함수
   virtual void test1(int value);
protected:
};
#endif // SCREEN1VIEW_HPP
//Screen1View.cpp
#include <gui/screen1_screen/Screen1View.hpp>
Screen1View::Screen1View()
{
}
void Screen1View::setupScreen()
{
   Screen1ViewBase::setupScreen();
   //textArea1에 추가한 와일드카드에 출력할 버퍼
   textArea1.setWildcard(testTextAreaBuffer);
   //처음 부팅될때 초기값 입력
   Unicode::snprintf(testTextAreaBuffer, 10,"%d", 0);
	textArea1.invalidate(); //UI업데이트
	textArea1.resizeToCurrentText(); //UI업데이트
	textArea1.invalidate(); //UI업데이트
}
void Screen1View::tearDownScreen()
{
   Screen1ViewBase::tearDownScreen();
}
void Screen1View::test1(int value){
	//현재슬라이더값인 value를 textarea1에 출력한다!
	//현재 슬라이더값을 버퍼에 대입한다!
	Unicode::snprintf(testTextAreaBuffer, 10,"%d", value);
	textArea1.invalidate(); //UI업데이트
	textArea1.resizeToCurrentText(); //UI업데이트
	textArea1.invalidate(); //UI업데이트
}


4.슬라이더값을 0~100사이로 바꿀수 있도록 하고, 박스프로그레스의 범위를 0~100사이로 지정해서 슬라이더값이 바뀔때마다 박스프로그레스를 업데이트하시오!

//Screen1View.hpp
#ifndef SCREEN1VIEW_HPP
#define SCREEN1VIEW_HPP
#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
#include <gui/screen1_screen/Screen1Presenter.hpp>
class Screen1View : public Screen1ViewBase
{
public:
   Screen1View();
   virtual ~Screen1View() {}
   virtual void setupScreen();
   virtual void tearDownScreen();
   //textarea에 값을 출력하기 위한 중간변수
   touchgfx::Unicode::UnicodeChar testTextAreaBuffer[10];
   //슬라이더 값이 바뀌면 호출되는 함수
   virtual void test1(int value);
protected:
};
#endif // SCREEN1VIEW_HPP
//Screen1View.cpp
#include <gui/screen1_screen/Screen1View.hpp>
Screen1View::Screen1View()
{
}
void Screen1View::setupScreen()
{
   Screen1ViewBase::setupScreen();
   //textArea1에 추가한 와일드카드에 출력할 버퍼
   textArea1.setWildcard(testTextAreaBuffer);
   //처음 부팅될때 초기값 입력
   Unicode::snprintf(testTextAreaBuffer, 10,"%d", 0);
	textArea1.invalidate(); //UI업데이트
	textArea1.resizeToCurrentText(); //UI업데이트
	textArea1.invalidate(); //UI업데이트
}
void Screen1View::tearDownScreen()
{
   Screen1ViewBase::tearDownScreen();
}
void Screen1View::test1(int value){
	//현재슬라이더값인 value를 textarea1에 출력한다!
	//현재 슬라이더값을 버퍼에 대입한다!
	Unicode::snprintf(testTextAreaBuffer, 10,"%d", value);
	textArea1.invalidate(); //UI업데이트
	textArea1.resizeToCurrentText(); //UI업데이트
	textArea1.invalidate(); //UI업데이트
               boxProgress1.setValue(value);//박스프로그레스바 값 업데이트
}


5.슬라이더값을 0~100사이로 바꿀때 gauge를 추가해서 0~100사이로 값이 바뀌도록 하시오!

//Screen1View.hpp
#ifndef SCREEN1VIEW_HPP
#define SCREEN1VIEW_HPP
#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
#include <gui/screen1_screen/Screen1Presenter.hpp>
class Screen1View : public Screen1ViewBase
{
public:
   Screen1View();
   virtual ~Screen1View() {}
   virtual void setupScreen();
   virtual void tearDownScreen();
   //textarea에 값을 출력하기 위한 중간변수
   touchgfx::Unicode::UnicodeChar testTextAreaBuffer[10];
   //슬라이더 값이 바뀌면 호출되는 함수
   virtual void test1(int value);
protected:
};
#endif // SCREEN1VIEW_HPP
//Screen1View.cpp
#include <gui/screen1_screen/Screen1View.hpp>
Screen1View::Screen1View()
{
}
void Screen1View::setupScreen()
{
   Screen1ViewBase::setupScreen();
   //textArea1에 추가한 와일드카드에 출력할 버퍼
   textArea1.setWildcard(testTextAreaBuffer);
   //처음 부팅될때 초기값 입력
   Unicode::snprintf(testTextAreaBuffer, 10,"%d", 0);
	textArea1.invalidate(); //UI업데이트
	textArea1.resizeToCurrentText(); //UI업데이트
	textArea1.invalidate(); //UI업데이트
}
void Screen1View::tearDownScreen()
{
   Screen1ViewBase::tearDownScreen();
}
void Screen1View::test1(int value){
	//현재슬라이더값인 value를 textarea1에 출력한다!
	//현재 슬라이더값을 버퍼에 대입한다!
	Unicode::snprintf(testTextAreaBuffer, 10,"%d", value);
	textArea1.invalidate(); //UI업데이트
	textArea1.resizeToCurrentText(); //UI업데이트
	textArea1.invalidate(); //UI업데이트
               gauge1.setValue(value);//게이지 값 업데이트
}
반응형
Posted by 덕력킹
,