이번에는 LabVIEW를 이용하여 전화번호부를 만들어본 것에 대해서 정리해볼 예정이다.
MS ACCESS DB를 이용하고 LabVIEW와 연동시켜서 활용하였다.
🍀 MS ACCESS DB
- 'seminar' DB 생성 및 연결
- 전화번호부 저장을 위한 테이블 1개 생성
- mdb 형식 DB 생성 (Access 2002-2003 파일 형식)
- Windows 관리도구 > ODBC Data Sources(32-bit) >> 생성한 DB 연결
- LabVIEW Database Connectivity Toolkit 이용
🍀 프런트패널
- 전화번호부 : 테이블, 캡션, 수직 스크롤, 열헤더
- 이름, 전화번호 : 문자열
- 입력, 삭제, 종료 : 불리언
- 입력 클러스터 : 이름, 전화번호, 입력, 삭제 포함
- 알림 : 문자열, 자동 줄바꿈 활성화
🍀 블록 다이어그램
- 초기값 설정 :
이름, 전화번호, 알림- 빈 문자열,입력, 삭제, 종료- F,전화번호부- DB 내용- 클러스터 내
이름,전화번호에 입력받음입력: DB에 입력 및전화번호부에 내용 표시,알림에 '이름, 전화번호가 추가되었습니다.' 2초 간 표시 후 비움,전화번호부에 갱신 된 DB 보여줌- 전화번호 중복 안 됨
전화번호부에서 특정 정보(이름 or 전화번호) 클릭 시 해당 내용을 클러스터에 있는이름,전화번호에 보여줌삭제누르면이름,전화번호의 해당 내용 삭제(내용이 하나라도 없을 시알림에 '이름과 전화번호를 모두 써주세요.' 2초 간 표시 후 비움- 삭제 전 확인을 묻는 대화상자 띄움, 삭제 완료 후
알림에 '이름, 전화번호가 삭제되었습니다.' 2초 간 표시 후 비움,전화번호부에 갱신 된 DB 보여줌이름,전화번호에 내용이 하나라도 없는데입력을 누른 경우전화번호부에 입력X,알림에 '이름과 전화번호를 모두 써주세요' 2초 간 표시 후 비움- PhoneBook 테이블과도 입력, 삭제 결과가 동일해야함
종료: 실행 종료가 아닌 프로그램 완전 종료- 필요 시 글로벌 변수 또는 subVI 자유롭게 사용
- 전화번호가 동일할 경우
clear error.vi사용
LabVIEW만을 이용해서 전화번호부를 만드는 것도 어려울 것 같았는데, MS ACCESS까지 연동시켜서 써야된다니 막막하다는 생각이 들었다.
+ 조건들이 생각보다 너무 까다로웠다...
우선 ACCESS는 사용하지 않고, LabVIEW만을 이용해서 만들어본 후, ACCESS를 연동시키는 쪽으로 가야겠다고 생각했다.

우선은 위에 적은대로 ACCESS를 연동시키지 않고 프런트패널만 만들어보았다.

변수는 이렇게 4개를 사용하였다.

시퀀스 구조를 사용해주었는데, 0번 시퀀스에서는 초기화를 시켜주었다.

이제부터는 1번 시퀀스일 때인데, 1번 시퀀스내에 while 루프를 넣어주었고, 그 내에 이벤트 구조를 넣어주었다.
같은 번호가 없는 경우![]() | 같은 번호가 있는 경우![]() |
|---|
이름과 전화번호를 입력받았을 때, 비어있지 않은 경우에도 같은 번호가 있는 경우와 같은 번호가 없는 경우로 나누어질 수 있기 때문에 이러한 경우도 나누어서 생각해주었다.
![]() | ![]() |
|---|
또한, 이름과 전화번호 중 하나도 입력받지 못했을 때는 위의 사진처럼 동작하도록 해주었다.

삭제할 번호 존재X![]() | 삭제할 번호 존재X![]() | 삭제할 번호 존재![]() |
|---|
클러스터 삭제 값변경이 되었을 때도 입력과 마찬가지로 삭제할 번호가 존재하는 경우와 삭제할 번호가 존재하지 않는 경우로 나누어서 생각을 해주었다.
![]() | ![]() |
|---|
이 부분도 마찬가지로 이름과 전화번호 중 하나도 입력받지 못했을 때는 위의 사진처럼 동작하도록 해주었다.

전화번호부 의 이름이나 번호를 클릭했을 때 클러스터에 이름과 번호가 나타나게 해주는 부분이다.

종료 버튼이 눌렸을 때는 단순 실행 종료가 아닌 LabVIEW 종료 함수를 이용하여 완전히 프로그램이 종료되게 해주었다.
우선 LabVIEW 내에서는 전화번호부가 동작하게 만들어 놓았으니 DB를 조건에 맞추어 생성하였다.
DB 연동을 위해 LabVIEW의 DB Connectivity Toolkit을 사용해야되기 때문에 이 toolkit 안에 어떤 VI들이 있는지 먼저 공부하였다.

연결 정보 경로를 사용하여 데이터베이스 연결을 열고 연결 참조를 반환한다.

연결된 연결 참조를 삭제하여 데이터베이스 연결을 닫는다.

SQL 쿼리를 실행하고 레코드 집합 참조를 반환한다.
레코드 집합 참조는 DB Tools Free Object VI를 사용하여 해제해야 한다.

연결된 참조를 삭제하여 개체를 해제하고 다른 참조 개체를 반환한다.

레코드 집합 참조 입력으로 식별 된 레코드 집합의 데이터를 검색한다.
Database Variant to Data 기능을 사용하여 Array의 각 요소를 기본 LabVIEW 데이터 유형으로 변환할 수 있다.

데이터베이스 변형을 유형에 지정된 LabVIEW 데이터 유형으로 변환하여 다른 함수 또는 VI에서 데이터를 사용할 수 있다.

연결 참조로 식별 된 데이터베이스의 테이블에 새 행을 삽입한다.

연결 참조로 식별된 데이터베이스에서 데이터를 삭제한다.

ACCESS 연동을 위해 수정을 해주며 프런트패널의 모습도 조금 더 깔끔하게 바꾸어주었다.

초기화 부분에 DB를 연동시켜주었다.
toolkit의 VI들 사용 순서는 구글링해서 사람들이 어떤식으로 사용하는지 보고 거기에 맞추어 사용해주었다.










구현을 위해 생각해야될게 너무 많아서 더 복잡하게 느껴졌었던 기억이 난다. 특히 Access도 처음 사용해보고, LabVIEW에서 toolkit을 이용해본게 처음이라 익숙하지 못해서 더 어렵게 느껴졌던 것 같다.
toolkit에 있는 VI들에 대해서 공부하면서 어떻게 사용해야될지 막막했는데 구글링을 해보면서 어떤 순서로 사용할지 알게 되었고, 잘 적용할 수 있었던 것 같다.
The sky is the limit