티스토리 뷰

[LabVIEW 예제] 텍스트 파일 읽기를 통해 라인별로 텍스트 구분하기

랩뷰로 프로그래밍을 할때 텍스트 파일을 처리해야 하는 경우가 상당히 많습니다. 텍스트 파일을 처리하기 위해서는 File IO와 문자열에 해당하는 다양한 vi들을 알아야 하고 이를 응용할 줄 알아야 합니다.


이번 글에서는 좀 더 원활한 텍스트 파일 처리를 위해서  텍스트 파일의 라인별로 데이터를 구분하여 배열로 뽑아보는 예제를 설명드리겠습니다. 이 글에서 제공할 예제의 블록다이어 그램을 다음처럼 구현이 되어 있습니다.



프로그래밍 절차를 간략히 설명을 드리자면 다음과 같습니다.

1) 파일을 읽어옵니다. 

2) 읽은 파일은 라인피드 상수로 구분하여 배열을 만듭니다. 

3) 배열의 크기를 통해서 텍스트 파일이 가진 라인의 갯수와 이에 대한 데이터를 다시 읽어 옵니다.


이 프로그램의 핵심은 바로 2) 과정입니다. 텍스트 파일에 가진 텍스트의 Line수를 파악하는 방법인데요. File IO에 대한 vi는 많이들 사용하셔서 접근하는데 문제는 없을것이라 생각이 듭니다. 이 VI에서 사용한 FILE IO 함수는 "텍스트 파일로 부터 읽기" 함수입니다. (참고하세요~)


그럼 이번 포스팅에 가장 핵심이 되는 2) 과정을 살펴볼께요.

2) 과정의 핵심은 "스프레드시트 문자열을 배열로"라는 함수입니다. 


문자열을 가지고 와서 특정 배열로 바꾸는 역할을 하는 녀석인데요. 그림을 통해서 좀더 상세한 내용은 살펴볼까요. 총 4개의 입력과 1개의 출력을 가진 함수입니다. 입력은 구분문자, 포맷문자열, 스트레드시트 문자열, 배열타입이 있고, 출력으로는 배열이 있습니다.



여기서 중점적으로 봐야할 부분은 바로 포맷 문자열입니다. 생성한 배열을 String으로 할지, Double형 혹은 Int형으로 할지 결정하는 부분이니깐요. 사실 제가 만든 VI에서는 그다지 큰 역할을 하지는 않습니다. 저는 단지 라인의 수만 알아와야 하는 부분이라서 double이든 string이든 크게 차이가 없습니다.


하지만 텍스트 파일을 처리하고자 할때, 처리해야 하는 데이터 형에 따라서 포맷 문자열을 구분해주셔야 합니다. %s는 문자열을, %f는 double형을, %d는 정수형이라는걸 잊지 마세요.


위의 예제는 double형 배열로 값을 받는 부분인데, 이 부분을 문자열 배열로 변경하고자 하시면 아래와 같이 구현하시면 됩니다. 배열타입에 문자열 배열 상수를 넣으시면 됩니다. 

그럼 위의 프로그램을 한번 돌려볼까요.테스트를 하기 위해서 총 7줄로 구성된 about labview라는 txt 파일을 생성해 보았습니다. 



위의 프로그램을 돌리시면 아래와 같은 결과를 얻으실 수 있습니다.



다른 방법도 여러가지가 있겠지만, 간단히 텍스트 파일의 데이터의 라인수와 라인에 따른 데이터를 가져오는 방법 알아보았습니다. 

첨부로 관련 코드와 txt 파일 올려놓도록 하겠습니다. (LV 2013 버전입니다.)


첨부파일


이글이 도움이 되셨나요?

그렇다면 아래의 그림을 클릭해주세요.



댓글