[LabVIEW] 전화번호부

이여진·2023년 7월 22일

LabVIEW

목록 보기
3/3
post-thumbnail

이번에는 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 연동 전)


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


📌 블록 다이어그램(ACCESS 연동 전)


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

 

💡초기화


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

 

💡입력 값 변경


이제부터는 1번 시퀀스일 때인데, 1번 시퀀스내에 while 루프를 넣어주었고, 그 내에 이벤트 구조를 넣어주었다.

같은 번호가 없는 경우같은 번호가 있는 경우

이름과 전화번호를 입력받았을 때, 비어있지 않은 경우에도 같은 번호가 있는 경우같은 번호가 없는 경우로 나누어질 수 있기 때문에 이러한 경우도 나누어서 생각해주었다.

 

또한, 이름과 전화번호 중 하나도 입력받지 못했을 때는 위의 사진처럼 동작하도록 해주었다.

💡삭제 값 변경

삭제할 번호 존재X삭제할 번호 존재X삭제할 번호 존재

클러스터 삭제 값변경이 되었을 때도 입력과 마찬가지로 삭제할 번호가 존재하는 경우삭제할 번호가 존재하지 않는 경우로 나누어서 생각을 해주었다.

이 부분도 마찬가지로 이름과 전화번호 중 하나도 입력받지 못했을 때는 위의 사진처럼 동작하도록 해주었다.

 

💡전화번호부 마우스 다운


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

 

💡종료 값 변경


종료 버튼이 눌렸을 때는 단순 실행 종료가 아닌 LabVIEW 종료 함수를 이용하여 완전히 프로그램이 종료되게 해주었다.

 

📌 DB Connectivity Toolkit

우선 LabVIEW 내에서는 전화번호부가 동작하게 만들어 놓았으니 DB를 조건에 맞추어 생성하였다.
DB 연동을 위해 LabVIEW의 DB Connectivity Toolkit을 사용해야되기 때문에 이 toolkit 안에 어떤 VI들이 있는지 먼저 공부하였다.

 

🍀DB Tools Open Connection

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

 

🍀DB Tools Close Connection

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

 

🍀DB Tools Execute Query

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

 

🍀DB Tools Free Object

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

 

🍀DB Tools Fetch Recordset Data

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

 

🍀DB Variant to Data

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

 

🍀DB Tools Insert Data

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

 

🍀DB Tools Delete Data

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

 

📌 프런트패널(ACCESS 연동 후)


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

 

📌 블록 다이어그램(ACCESS 연동 후)

 

💡초기화


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

💡입력 값 변경





💡삭제 값 변경







💡전화번호부 마우스 다운



💡종료 값 변경




🤣 느낀점

구현을 위해 생각해야될게 너무 많아서 더 복잡하게 느껴졌었던 기억이 난다. 특히 Access도 처음 사용해보고, LabVIEW에서 toolkit을 이용해본게 처음이라 익숙하지 못해서 더 어렵게 느껴졌던 것 같다.

toolkit에 있는 VI들에 대해서 공부하면서 어떻게 사용해야될지 막막했는데 구글링을 해보면서 어떤 순서로 사용할지 알게 되었고, 잘 적용할 수 있었던 것 같다.

profile
The sky is the limit

2개의 댓글

comment-user-thumbnail
2023년 7월 22일

The sky is the limit

1개의 답글