Lesson 7_1 Event Structure(이벤트 구조_일반)
안녕하세요. 오랫만에 글을쓰게 되었습니다. 개인적인 일정도 있고 계속 바쁘네요. 하지만 계속 블로그를 쓰도록 하겠습니다.
이번에는 이벤트 구조에 대해서 설명하도록 하겠습니다.
이벤트 코드는 사용자가 특별한 행동을 했을때 수행하는 동작을 말합니다. 예를 들어서 프로그램이 1부터 무한까지 영원히 더한다고 할때 사용자가 종료버튼을 누르면 이벤트가 발생해서 그 이벤트에 따른 행동을 취하는 것입니다. 이 예에서는 종료가 되겠죠.
그럼 이벤트 케이스를 직접 짜보도록 하겠습니다.
처음에 프런트 패널에 가서 버튼을 선택합니다.
While Loop를 사용하기 때문에 Stop버튼도 생성해 줍니다.
숫자형 인디게이터를 생성해서 이벤트 케이스가 몇회 반복되었는지 확인할수 있습니다.
숫자형 인디게이터는 우클릭 하여 형으로 가서 I32로 변경 하시기 바랍니다. 이유는 횟수만을 측정하기 때문에 소수까지 표시할 이유가 없습니다.
이제 블록다이어그램에 가서 while Loop를 생성합니다.
이제 while Loop안에 이벤트 구조를 생성해 줍니다.
이제 이벤트 구조에 이벤트 케이스를 추가할수 있습니다. 타임아웃에 마우스를 대고 우클릭을 하면 그림8과 갖이 나옵니다. 여기서 이벤트 케이스 추가를 선택해 주시기 바랍니다.
이벤트 편집할때 그림9와 같이 창이 생성이 됩니다. 위 사진에서는 정지버튼을 이용해서 이벤트 케이스를 생성하도록 하겠습니다. 이벤트 소스에서 정지를 선택하고 이벤트에서 값변경을 선택합니다.
- 값변경은 해당 버튼, 숫자, 등등의 값이 변경될때 이벤트가 발생하도록 합니다. 그림9의 경우 정지버튼을 누르면 거짓에서 참으로 값이 변경되기때문에 정지 이벤트가 발생합니다.
정지 이벤트를 생성하고 정지 버튼을 그림10과 같이 넣습니다. 이제 프로그램이 동작되고 사용자가 정지를 누를때 정지값이 거짓->참 으로 변경이 되고 그 값이 while loop를 정지하게 됩니다.
- 팁 : 이벤트 케이스를 만들때 해당 케이스에 해당되는 컨트롤을 넣는것을 추천 드립니다. 향후에 디버깅 할때 쉽고 해당 이벤트를 빨리 찾을수 있기 때문입니다.
그림 11 ~ 14까지는 정지 케이스와 마찬가지로 진행을 하시면 됩니다. 다만 이번 확인 케이스에는 단일대화버튼이 추가가 됩니다. 사용자가 확인버튼을 누르게 되면 대화상자 창이 뜨도록 하는것입니다. 내용은 아무거나 적어도 상관 없지만 위 경우는 "확인 이벤트를 실행하셨습니다"로 지정했습니다.
그림15 에서 확인 버튼을 누르면 확인 이벤트가 실행이 됩니다. 그리고 확인을 누른 횟수 만큼 숫자형 인디게이터가 +1씩 오르는 것을 확인할수 있습니다. 이는 어떻한 이벤트가 없으면 while loop는 반복을 하지 않습니다. 하지만 이벤트가 없는 상황에서 어떻한 프로그램을 돌려야 한다면 타임아웃을 지정 하셔야 합니다.
그림19를 보면 숫자형 인디게이터가 1초마다 커지는 것을 볼수 있습니다. 비록 타임오프에 어떻한 프로그램도 없지만 while loop에서는 1초마다 이벤트가 실행이 되기 때문에 숫자가 올라가게 되는 것입니다.
이걸로 이벤트 케이스에 대한 대략적인 설명을 마무리 하겠습니다. 이후에도 이벤트 케이스에 대해서 몇가지 더 추가적으로 설명을 드리도록 하겠습니다. 감사합니다.
이번에는 이벤트 구조에 대해서 설명하도록 하겠습니다.
그림1) 이벤트 코드에 대한 순서도 |
이벤트 코드는 사용자가 특별한 행동을 했을때 수행하는 동작을 말합니다. 예를 들어서 프로그램이 1부터 무한까지 영원히 더한다고 할때 사용자가 종료버튼을 누르면 이벤트가 발생해서 그 이벤트에 따른 행동을 취하는 것입니다. 이 예에서는 종료가 되겠죠.
그럼 이벤트 케이스를 직접 짜보도록 하겠습니다.
그림2) 버튼 선택 |
처음에 프런트 패널에 가서 버튼을 선택합니다.
그림3) Stop버튼 사용 |
While Loop를 사용하기 때문에 Stop버튼도 생성해 줍니다.
그림4) 숫자형 인디게이터 생성 |
숫자형 인디게이터를 생성해서 이벤트 케이스가 몇회 반복되었는지 확인할수 있습니다.
그림5) 숫자형 인디게이터의 형 변경 |
숫자형 인디게이터는 우클릭 하여 형으로 가서 I32로 변경 하시기 바랍니다. 이유는 횟수만을 측정하기 때문에 소수까지 표시할 이유가 없습니다.
그림6) while Loop생성 |
이제 블록다이어그램에 가서 while Loop를 생성합니다.
그림7) 이벤트 구조 생성 |
이제 while Loop안에 이벤트 구조를 생성해 줍니다.
그림8) 이벤트 구조에 케이스 추가 |
그림9) 이벤트 편집 |
- 값변경은 해당 버튼, 숫자, 등등의 값이 변경될때 이벤트가 발생하도록 합니다. 그림9의 경우 정지버튼을 누르면 거짓에서 참으로 값이 변경되기때문에 정지 이벤트가 발생합니다.
그림10) 정지 이벤트가 생성 |
정지 이벤트를 생성하고 정지 버튼을 그림10과 같이 넣습니다. 이제 프로그램이 동작되고 사용자가 정지를 누를때 정지값이 거짓->참 으로 변경이 되고 그 값이 while loop를 정지하게 됩니다.
- 팁 : 이벤트 케이스를 만들때 해당 케이스에 해당되는 컨트롤을 넣는것을 추천 드립니다. 향후에 디버깅 할때 쉽고 해당 이벤트를 빨리 찾을수 있기 때문입니다.
그림11) 확인 이벤트 생성 |
그림12) 단일버튼 대화상자 생성 |
그림13) 단일대화버튼의 대화내용 생성 |
그림14) 확인버튼 이벤트 완성 |
그림 11 ~ 14까지는 정지 케이스와 마찬가지로 진행을 하시면 됩니다. 다만 이번 확인 케이스에는 단일대화버튼이 추가가 됩니다. 사용자가 확인버튼을 누르게 되면 대화상자 창이 뜨도록 하는것입니다. 내용은 아무거나 적어도 상관 없지만 위 경우는 "확인 이벤트를 실행하셨습니다"로 지정했습니다.
그림15) 프로그램 실행 |
그림16) 횟수 확인 |
그림15 에서 확인 버튼을 누르면 확인 이벤트가 실행이 됩니다. 그리고 확인을 누른 횟수 만큼 숫자형 인디게이터가 +1씩 오르는 것을 확인할수 있습니다. 이는 어떻한 이벤트가 없으면 while loop는 반복을 하지 않습니다. 하지만 이벤트가 없는 상황에서 어떻한 프로그램을 돌려야 한다면 타임아웃을 지정 하셔야 합니다.
그림17) 이벤트 터미널 |
사진17에서 왼쪽 위쪽을 보면 모래시계모양의 아이콘이 보입니다. 이것은 이벤트 터미널 인데 기본값은 -1로 되어있습니다. -1이란 실행을 하지 말라는 뜻입니다. 따라서 현재 이 프로그램은 이벤트 버튼을 제외하고는 어떻한 작업을 하지 않습니다.
|
그림18) 이벤트 터미널에 ms설정 |
하지만 이벤트 터미널에 정수를 설정하면 ms단위로 타임아웃을 실행할수 있습니다. 사진 18에서는 1000으로 했기 때문에 1초마다 한번씩 타임아웃에 있는 프로그램을 실행하게 됩니다.
그림19) 숫자형 증가 |
그림19를 보면 숫자형 인디게이터가 1초마다 커지는 것을 볼수 있습니다. 비록 타임오프에 어떻한 프로그램도 없지만 while loop에서는 1초마다 이벤트가 실행이 되기 때문에 숫자가 올라가게 되는 것입니다.
이걸로 이벤트 케이스에 대한 대략적인 설명을 마무리 하겠습니다. 이후에도 이벤트 케이스에 대해서 몇가지 더 추가적으로 설명을 드리도록 하겠습니다. 감사합니다.
댓글
댓글 쓰기