티스토리 뷰
이번 글에서는 랩뷰에서 로그인을 처리할 수 있도록 하는 로그인 화면을 만들어볼까 합니다.
로그인 화면은 어플리케이션 인증에 반드시 필요한 부분이니 자주 사용되는 사용자 인터페이스 기능 중 하나입니다.
그럼 개발하는 과정을 살펴볼까요.
1. 로그인(ID/PW) 받는 윈도우 만들기
먼저 ID와 PW를 받을 창을 만들어 보겠습니다.
새로운 VI를 만들고 이 VI의 사용자 인터페이스를 아래와 같이 구성을 합니다.
그리고 나서 아래처럼 While, Event 구조를 이용하여 코드를 구성합니다.
아래의 코드는 기본적인 구조만 넣은 상태입니다.
확인버튼과 취소버튼에 대한 이벤트를 각각 추가합니다.
이벤트 추가방법은 아래와 같습니다. 이벤트구조에서 오른쪽 마우스버튼을 눌러 이벤트 케이스 추가를 누릅니다.
취소버튼과 확인버튼에 대해서 2번 반복해야 합니다.
이벤트 편집 창이 뜨면 확인 버튼과 취소 버튼을 이벤트 소스로 지정을 하고 값 변경 이벤트를 추가합니다.
이제 각 이벤트에 대해서 알고리즘을 구현합니다.
확인 버튼의 경우 사용자가 입력한 ID/PW와 프로그램 내부에 정의된 ID/PW가 맞은 경우에만 종료를 하게끔 처리합니다.
아래의 코드는 ID와 PW 가 모두 admin입니다. 이 부분은 DB와 연동을 해도 되고, 텍스트 파일과 연동하여 각 ID와 PW에 맞게끔 처리도 할 수 있습니다.
취소의 경우 바로 종료가 되게끔 구현을 합니다.
코드의 앞 부분을 보면ID/PW 컨트롤의 값을 로컬 변수를 활용하여 ""값을 넣게끔 만들어놓았는데,
이는 이 창을 새로 띄웠을 때 ID/PW에 이전 값을 넣지 않기 위함입니다.
마지막으로 로그인 화면 관련 VI에서 CTRL + I를 눌러 VI 프로퍼티 창을
열고,
윈도우 모양으로 가서 대화 상자 부분을 체크박스 처리합니다.
이 VI를 실행하면 아래와 같은 화면이 나옵니다.
admin/admin을 입력했을 때 제대로 종료가 되는지, 취소 버튼을 눌렀을 때 제대로 종료가 되는지를 확인합니다.
자 이제 로그인 화면은 다 만들었습니다.
그럼 이제부터 실질적으로 이 화면을 띄울 VI를 만들어보도록 합시다.
2. 로그인 창을 띄우는 메인 화면 만들기
새로운 VI를 하나 생성하여 아래와 같은 유저 인터페이스를 구성합니다.
간단하게 확인 버튼을 누르면 로그인 창을 띄우고, 정지버튼을 누르면 프로그램을 종료하게끔 할 것입니다.
코드는 아래와 같이 작성을 합니다.
확인버튼의 값을 케이스에 묶고 참인 경우에만 1번 과정에서 만든 VI를 호출하게 합니다.
거짓인 경우에는 아무런 일도 발생하지 않게 해놓았습니다.
(이 부분은 케이스가 아니라, 이벤트를 써도 무방하겠죠.)
자 이제 실행을 해봅니다.
실행을 하기 전에 참고해야 할 사항이 있습니다.
위의 코드에서는 참 일 때만 1번에서 만든 VI를 호출을 합니다.
하지만 1번 VI가 LabVIEW(랩뷰) 개발 환경에서 켜져 있는 상태이면 자동적으로 이 코드가 실행이 되어 로그인 화면이 뻗어버립니다.
따라서 1번 과정에서 만든 VI의 창을 모두(프론트패널, 블록다이어그램) 닫습니다.
그리고 실행을 합니다.
확인버튼을 누르면 아래와 같이 로그인 화면이 뜹니다.
admin/admin을 넣던지, 취소버튼을 눌렀을 때 LoginMain.vi가 없어지는 확인합니다.
저는 잘되네요.
다시 기본 화면으로 돌아왔습니다. 다시 확인버튼을 누르면 위와 같이 로그인 창이 뜹니다.
이 코드는 완벽하지 않은 코드이죠.
로그인 성공을 했을 때와 실패한 경우에 대한 값을 subVI(LoginMain.vi)로부터 받아와야 하는데 그 부분이 빠졌습니다.
이 부분은 사용하고 자는 사람들의 숙제로 남겨놓을까 합니다.
고민해보시고 짜보시면 될 것 같습니다.
그럼 이만 줄이겠습니다.
이 글이 도움이 되셨으면 아래의 하트를 눌러주세요.
'National Instruments > LabVIEW' 카테고리의 다른 글
[LabVIEW] 랩뷰에서 현재 날짜와 시간 문자열로 받아오기 (1) | 2015.12.07 |
---|---|
[LabVIEW] 컨트롤과 인디케이터 디스플레이 형식 변경하기 (0) | 2015.12.02 |
[LabVIEW] 랩뷰에서 Citadel을 이용한 알람 확인하기(DSC 모듈) (0) | 2015.11.17 |
[LabVIEW] 랩뷰에서 Citadel을 이용한 데이터 로깅하기(DSC 모듈) (0) | 2015.11.17 |
[LabVIEW] Citadel 히스토리 데이터베이스 데이터 처리하기 (0) | 2015.11.16 |