안녕하세요. 지지비입니다. 이번 포스팅에는 랩뷰의 프로젝트를 사용하는 법에 대해서 알아보도록 하겠습니다. 1. 프로젝트란 무엇인가? 프로그램을 만들다 보면 프로그램에 사용하는 subVI, 설정 파일, 텍스트 파일, 기타 여러가지 파일들을 윈도우 폴더 안에 넣어 관리할 수 있습니다. 프로젝트는 프로그램에서 사용하는 파일, 문서나 subVI를 연결해 주는 역할을 합니다. 프로젝트로 관리하면 subVI를 추가할 때 프로젝트 내에서 관리하고 있으면 바로바로 추가하기도 쉽고, 오류가 있는 파일도 찾기 쉽습니다. 2. 프로젝트 만들기 기존에 만들어 둔 프로그램이 아래와 같다고 생각하겠습니다. 메인 프로그램인 Main.vi와 SubVI폴더에 사용하고 있는 SubVI를 저장해 둔 상태입니다. 랩뷰 메뉴에서 File -..
안녕하세요. 지지비입니다. 이번에는 랩뷰의 디자인 패턴 중 대표적인 상태머신 구조에 대해서 알아보도록 하겠습니다. 1. 상태머신 구조란? 상태머신 구조를 이해하기 위해서는 먼저 상태라는 단어를 이해해야 합니다. 상태는 알고리즘을 다이어그램 형태로 만들었을 때 각각의 박스를 상태로 이해하면 편할 것 같습니다. 아래는 제가 자판기 예제를 만들기 위해 작성한 다이어그램입니다. 각 상태를 빨간색 점선으로 표기했습니다. 상태를 파악했으니 상태머신 구조에 대해서 알아보겠습니다. 상태머신 구조는 아래와 같이 구현합니다. While 루프, 케이스 구조, 시프트 레지스터가 상태머신 구조를 만드는 세 가지 요소입니다. 최초 시프트 레지스터 초기화를 통해서 초기 상태를 지정합니다(제외할 수 있음). 케이스 구조에서 상태를 ..
이번 강의에서는 이벤트 구조(Event Structure)에 대해서 알아보도록 하겠습니다. 1. 이벤트 구조란 무엇인가? 이벤트 구조는 "특정 이벤트"가 발생했을 때 어떤 코드를 실행시킨다는 목적을 가지고 있는 구조입니다. 대표적으로 어떤 버튼을 클릭한다거나, 단축키를 누른다거나 하는 행위가 이벤트이고 이벤트가 발생했을 때 어떤 코드를 실행하도록 하게 되어 있습니다. 특정 이벤트가 발생하는 것을 감지하기 위해서 이벤트 구조는 보통 혼자서 사용하지 않고 While 루프와 같이 사용합니다. 계속해서 이벤트를 감지하고, 감지했을 때 프로그램을 구동하기 위해서입니다. 따라서 이벤트 구조는 보통 아래와 같은 형태가 기본적으로 사용됩니다. 2. While 루프의 정지 이벤트 추가하기 위 구조에서 실행 버튼이 깨져 ..
안녕하세요. 이번 강의는 다시 기본 구조로 돌아와서 조건에 따라 실행할 코드를 변경하는 케이스 구조에 대해서 알아보도록 하겠습니다. 1. 케이스 구조란 랩뷰의 케이스 구조는 특정 입력이 들어왔을 때 입력에 따른 실행 코드를 지정해 주는 것을 말합니다. 대부분의 언어에서 사용하는 if...else...또는, switch와 같은 구조입니다. 케이스 구조는 블록 다이어그램의 함수 팔레트에서 Structures-Case Structures를 선택하여 배치할 수 있습니다. 2. 케이스 구조 인터페이스 케이스 구조는 케이스 선택자, 케이스 라벨과 케이스로 구분됩니다. 케이스 선택자에 입력된 값에 따라 같은 케이스 라벨에 있는 케이스가 실행됩니다. 즉, 한 번에 하나의 케이스만 실행됩니다. 아래는 케이스 입력을 불리..
이번 강의에서는 텍스트 파일에서 데이터를 불러와 XY 그래프를 그리는 방법에 대해서 설명하겠습니다. 이제 약간 어플리케이션 영역으로 넘어가는 것 같네요. 1. 사용할 데이터 아래 데이터는 테스트로 쓸 sine 형태의 x배열, y배열이 있는 데이터입니다. 2. 데이터 불러오기 스프레드시트 형태로 되어있는 데이터를 불러오기 위해 사용할 함수는 함수 팔레트의 File I/O - Read Delimited Spreadsheet.vi 입니다. 스프레드 시트로부터 읽기 함수를 블록 다이어그램에 위치시키겠습니다. 스프레드시트로부터 읽기 함수는 읽은 데이터의 출력 형태를 선택할 수 있습니다. Double형 숫자 Integer형 숫자 문자열 우리는 사인 함수이므로 데이터에 소수점이 포함되기 때문에 1번 또는 3번으로 선..
이번 강의에서는 SubVI에 대해서 알아보겠습니다. SubVI는 기타 언어에서 사용하는 함수와 같은 개념입니다. 입력을 받고, 입력을 처리하고, 출력합니다. 이전 강의에서 사용한 랩뷰의 더하기(Add)라는 함수도 일종의 SubVI라고 봐도 되겠죠. 1. SubVI의 개념 아래와 같이 a,b를 입력받아서 두 값을 더한 후 c로 출력하는 함수가 있다고 생각해 봅시다. 이 함수는 랩뷰에 기본적으로 있는 Add 함수와 동일한 역할을 합니다. 2. SubVI 만들기 입력 a, b를 받아서 아래와 같이 계산해서 c로 출력해야 하는 경우를 생각해 봅시다. c = a/(a+b) 기본 함수를 사용해서 블록 다이어그램에서 코드를 짜면 아래와 같습니다. 여기서 c=a/(a+b) 를 계산하는 SubVI를 만들 때 가장 많이 ..
이번 시간에는 랩뷰에서 XY 그래프를 만드는 방법에 대해서 알아보겠습니다. 1. XY 그래프 프론트 패널에 추가하기 XY 그래프는 프론트 패널의 컨트롤 팔레트에서 Graph - XY Graph를 선택하여 추가할 수 있습니다. XY 그래프를 추가하고 블록 다이어그램으로 가 봅시다. Ctrl+H 를 눌러서 도움말(Context Help) 창을 보이게 만든 후, XY 그래프 터미널에 마우스를 올려 놓으면 XY 그래프에 대한 설명이 도움말에 나타납니다. 다른 함수나 VI를 사용할 때에도 도움말을 참고하는 것이 좋습니다. 2. XY 그래프 만들기 (단일 플롯) 단일 플롯(Single Plot)을 만들기 위해서는 x 배열과 y 배열을 클러스터로 묶어서 XY 그래프에 연결하라고 합니다. 상수 배열 두개를 준비해서 클..
8일차는 사고후 그냥 쉬었다...기 보다는 병원에서 물리치료 받고 차량 수리 맞기러 다니느라 바빴다.9일차이다.아침은 방탄커피를 마셨다. 폼메이커에 버터를 통채로 넣으면 폼 만들어주는 부분이 빠지는 거라고 생각했는데 그냥 다시 돌리니까 괜찮다. 다음부터는 버터를 열심히 녹일 필요는 없을 것 같다.점심은 진주의 키토도시락 레시피 중 순대없는 순대볶음을 만들어 먹었다. 깻잎이 톡톡히 맛을 하는게 괜찮았다. 저녁은 사고당한날 ㅎㅎ 만들어 놓은 미트볼과, 두부면, 스파게티 소스로 파스타를 해 먹었다. 약간 모자라게 먹었지만 그래도 괜찮았다. 오늘의 아세톤 농도는 7.1 이고 몸무게는 69.9kg이다. 키토를 시작하고 나서 유산균 영양제도 꾸준히 먹고 무당요거트도 계속 먹고 있는데, 변비가 있다. 3일에 한 번 ..
이번 강의에서는 루프와 함께 배열을 다루는 방법에 대해서 알아보도록 하겠습니다. 대표적으로 꼭 알아야 할 내용은 오토인덱싱(Auto Indexing)입니다. 1. 오토 인덱싱 For 루프나 While 루프에 배열을 연결하면 기본적으로 오토인덱싱이 활성화됩니다. 오토인덱싱은 루프에 배열을 연결했을 때 루프가 돌면서 배열의 원소를 자동으로 하나씩 꺼내거나 추가하는 것을 말합니다. 아래와 같이 오토인덱싱 활성화/비활성화는 루프에 연결된 터미널의 모양으로 알 수 있습니다. 오토인덱싱이 활성화된 경우 터미널에 대괄호[]모양이 나타나며, 비활성화된 경우 터미널의 속이 모두 파란색으로 채워집니다. 오토인덱싱 활성화/비활성화는 터미널을 오른쪽 클릭하여 Disable Indexing 또는 Enable Indexing을 ..
저탄고지에 후방추돌을 당한 것은 아니고 실제로 교통사고를 당했다. 뒤에 따라오던 운전자가 핸드폰 보다가 쌔려 박은것 같다. 코스트코에 삼겹살 사러 가다가 당한 사고니까 저탄고지 다이어리에 작성한다.(?)점심은 귀찮아서 예전에 사둔 육개장 한팩짜리를 끓여서 먹었는데 당분이 좀 들어가있는 것 같았다. 맛은 있었는데. 저녁은 후방추돌을 당한 뒤 코스트코에 가서 산 국내산 삼겹살을 에어프라이어에 돌려서 먹었다. 예전에 기름을 처리하려고 종이호일을 에어프라이어 아래에 깔고 했을 때는 정말 맛이 없었는데, 그냥 아무것도 없는 채로 돌리니까 훨씬 낫다. 특히 지방 부분의 기름이 빠지면서 훨씬 먹기 담백해져서 즐겨 먹을수 있게(?)되었다.오늘은 아침에 70.2kg였고 아세톤 농도는 측정하지 않았다.혹시 몰라 남겨두는 ..
안녕하세요. 10강에서는 앞으로 다루게 될 데이터 처리, XY 그래프 만들기 등에서 핵심적으로 사용할 배열에 대해서 알아보도록 하겠습니다. [7강 랩뷰의 데이터 구조] 글에서 배열에 대해서 간략히 알아보았습니다. 1. 배열(Array)이란 배열은 동일한 데이터 타입을 묶어 놓은 객체입니다. 배열에 들어있는 각각의 값을 원소라고 하며, 각 원소의 위치를 인덱스(index)라고 합니다. 보통 엑셀에서 사용하는 행과 열로 표현되는 2차원 배열을 주로 사용할 예정입니다. 2. 배열 만들기 랩뷰에서 배열은 동일한 데이터 타입을 묶어야 하기 때문에, 배열 껍데기 안에 특정 데이터를 넣어주면 배열을 생성할 수 있습니다. 컨트롤/인디케이터/상수 모두 동일한 방법으로 배열을 만들 수 있습니다. 3. 배열의 인덱스 배열의..
프로그램 자동화에서 빠질 수 없는 것이 반복 작업입니다. 저도 또한 반복 작업을 하기 싫어서 코딩을 하죠. 특정 작업을 반복하도록 해 주는 구조 중 하나가 루프(Loop)입니다. 루프는 비단 랩뷰 뿐만 아니라 다른 텍스트 기반의 프로그램 언어에서도 항상 초반에 언급되는 구조입니다. 1. 루프의 개념 예를 들어 '전압을 측정한다' 라는 행위를 프로그램으로 작성했다고 하면 알고리즘은 아래와 같습니다. 이제 '전압을 측정한다'라는 코드를 10번 반복하기 위해서 할 수 있는 것은 어떤 게 있을까요? 프로그램을 10번 실행한다. 코드를 10번 반복하게 만들고, 프로그램을 1번 실행한다. 이렇게 두 가지 방법이 있습니다. 하지만 첫 번째는 자동화라고 하기에는 모자란 부분이 있지요. 프로그램 사용자가 프로그램을 10..