매번 버튼을 눌렀을 때 실행되는 이벤트만 만들어 오다가,

엔터를 눌렀을 때 다음화면으로 넘어가는 코드를 짜야하는데 어떻게 짜야할지 궁금했습니다.

그래서 알게된 방법을 공유하려고 합니다.

 

아래 만들어본 코드는 문자열에 글씨를 입력하고 엔터를 누르면 배열에 차곡차곡 입력되는 코드입니다.

정지를 누르면 프로그램이 종료됩니다.

 

프런트패널은 아래와 같이 구성하였습니다. (가운데 세모는 장식)

 

 

While문과 이벤트문을 만들어줍니다.

이벤트는 <이 VI>의 키다운?을 선택해줍니다.

 

 

 

키다운? 이벤트를 만들면 V키라는 것이 생깁니다.

V키를 '='(같음?)으로 연결한 후 상수를 생성하면 어느 버튼을 인식하는지 확인할 수 있습니다.

Enter, Return, Shift, Ctrl, Alt 등등 입력을 받을 수 있네요.

 

 

 

V키에 인디케이터를 연결하고 엔터를 입력하니 'Retern'이라고 나와서 부등호를 Retern과 연결하였습니다.

프로그램을 실행하면 배열은 빈배열로 초기화되고, Enter를 입력해서 V키에서 Retern값을 받으면, 문자열을 배열에 추가한 뒤 문자열 컨트롤을 다시 빈상수로 초기화하는 코드입니다.

 

'Retern'값 이외의 버튼을 입력받으면 배열을 유지하도록 거짓에도 배열 선을 연결을 해두었습니다.

While문에 시프트레지스터로 연결하지 않거나 거짓케이스에 연결하지 않고 초기값으로 받으면, 계속 비어있는 배열로 초기화가 됩니다.(조심) 

 

 

그리고 정지 버튼을 누르면 While문 종료조건에 참값이 입력되어 프로그램이 종료되도록 만들었습니다.

 

위와같이 코드를 구성하시면, 문자열에서 글씨를 쓰고 엔터를 치면 배열에 차곡차곡 들어가게 됩니다. ^^

 

 

 

엔터를 누르면 실행되는 이벤트문을 만들어보았는데 다른 키도 응용해볼 수 있겠네요 :-D

 

 

 

브라우저 오른쪽 상단의 X를 눌렀을 때 종료할건지 물어보고 응답에 따라 종료하는 방법입니다.

 

엑스를 눌렀는지 알 수 있는 이벤트는 <이VI>에 있는 '패널닫기?'이벤트 입니다. 아래 그림과 같이 설정합니다.

 

 

 

그리고 VI가 닫히도록 하기 위해서는 이 VI참조를 인보크노드와 연결하고 프런트패널>닫기를 선택해 줍니다.

 

그리고 이벤트문이 들어있는 While문이 끝나면 종료하도록 아래와 같이 코드를 배치해 주세요.

두버튼 대화상자는 사용자가 선택할 수 있게 하기 위해서 넣어주었음.

 

'패널닫기?' 이벤트에는 '버림?'이 붙어있는데,

버림에 참이 연결되면 이벤트문이 끝나도 다시 사용할 수 있고, VI가 다시 시작하면 이벤트 사용가능함.

거짓이 연결되면 이벤트문을 다시 사용할 수 없다고 하네요.

그러므로 참값을 연결해 줍니다. (이것 때문에 어려웠음 ㅠ)

 

 

아무튼 이걸로 엑스를 눌러도 그냥 꺼지지 않고 끌건지 말건지 물어볼 수 있으므로 좀 더 고급진 프로그램이 됨. ㅋㅋ

 

커서모양을 바꾸려면 커서설정이라는 함수를 사용합니다.

어디있는지 모르면 검색을 합니다. '커서'라고 입력하면 관련 함수가 나타납니다.

커서설정 더블클릭하면 커서 함수들이 나타납니다.

 

 

 

5개의 커서 함수들 중에 커서설정이라는 함수를 사용해서 커서모양을 바꿉니다.

커서설정 도움말을 참고하면 32가지 종류의 커서모양을 설정할 수 있네요.

32가지 이외의 커서모양을 설정하고 싶으면 '파일로부터 커서생성'함수를 사용해서 연결해 주면 되나봐요.(안해봄..ㅜ)

 

 

그럼!!

버튼에 올리면 손가락 모양이 나타나고, 다시 벗어나면 화살표 모양으로 바뀌는 코드를 만들어 봅니다.

이벤트문을 생성하고 이벤트 편집에 들어갑니다.

원하는 버튼의 마우스 이벤트에 '마우스 커서 들어옴', '마우스 커서 이탈'이 보이나요?

이걸 써서 이벤트를 만들어 줍니다.

 

 

 

 

# 버튼위에 마우스를 올렸을 때 (6번을 연결함)

(마우스는 캡쳐되지 않는걸 미쳐 몰라서 합성했음...)

 

 

 

# 버튼 밖으로 커서가 벗어남 (1번을 연결함)

(마우스는 캡쳐되지 않는걸 미쳐 몰라서 합성했음...)

 

 

 

버튼에 올리면 자동으로 손가락으로 바뀌는 줄 알았는데, 이런것도 다 설정해 줘야 하다니.... ㅜㅜ

 

 

마지막으로..

2번 모양은 사용중 설정과 함께 묶어서 사용하면 좋을 듯.. :-D..

 

 

버튼색상 프로퍼티노드는 두개의 색상으로 이루어진 클러스터가 배열로 연결된 크기가 2인 배열을 연결해서 사용.

따라서 아래과 같이 코드를 짰다.

 

그리고 일반버튼, 실버버튼, 클래식버튼, 시스템버튼이 어떻게 색상이 변하는지 확인하기 위해 버튼을 생성.

(시스템 버튼은... 색 프로퍼티노드를 사용할 수 없다. 그래서 비활성시킴)

 

아래 버튼색상을 참고해서 순서대로 잘 연결해서 쓰면 된다. :-D

 

# off일 때 색상

 

- 일반버튼 : 버튼색(색상자1)

- 실버버튼, 클래식버튼 : 테두리(색상자1), 버튼색(색상자2)

 

 

 

# on일 때 색상

 

- 일반버튼 : 버튼색(색상자3)

- 실버버튼, 클래식버튼 : 테두리(색상자3), 버튼색(색상자4)

 

 

 

 

 

 

파일 대화상자와 연결된 상수값을 보고,

아래의 저장화면과 매치해서 보기!!(같은 색상으로 연결했음 :-D)

 

 

 

 

 

참조를 이용해서 subVI에서 mainVI를 종료하는 코드입니다.

아래와 같이 코드를 구성합니다.

 

 

 

aaa.vi가 main VI이고 bbb.vi가 sub VI.

 

aaa.vi를 실행하면 종료?가 참조로 연결된 bbb.vi가 실행되고,

bbb.vi가 끝나면 aaa.vi로 신호를 보내고 종료되는 코드임.

 

참조를 bbb.vi로 연결해서 값(신호)로 연결해주면

aaa.vi의 값변경 이벤트에서 변경된 값을 받을 수 있다.

 

 

 

 

 

+ Recent posts