라벨이 bug인 게시물 표시

LabVIEW bug - 에러클러스터에 의한 엑셀 저장 오류

이미지
안녕하세요. 알렉스 입니다. 이번에는 제가 엑셀파일을 저장하다가 찾아낸 버그에 대해서 알려드리겠습니다. 위 버그는 엑셀을 저장할때 생기는 분제가 아니고 에러 클러스터를 통에 새 리포트에 에러가 입력이 되면 생기는 버그입니다. 그럼 버그를 가상으로 만들도록 하겠습니다. 그림1) 주로 사용할 함수들 그림2) 블록다이어그램 코딩 먼저 정상적으로 엑셀파일을 읽는 상황을 만들겠습니다. 일단 엑셀파일을 읽어오기 위해서는 그림1의 함수들을 사용해야 합니다. 이후 그림2와 같이 코딩을 하면 됩니다. 그림3)  Excel Get Data.vi에 데이터 타입을 연결하고 출력쪽에는 데이터를 연결합니다. 실제 엑셀시트에 적혀져 있는 데이터는 그림3의 데이터에 출력됩니다. 그림3) 프런트 패널 완성 그림4) 출력할 Excel 선택 그림5) 결과 정상 이제 프론트패널에서 원하는 엑셀파일을 선택한후 정상적으로 출력된 것을 확인 할수 있습니다. 그림6) 에러 클러스터 추가(입력,출력) 그림7) 클러스터 배치 이제 에러 클러스터를 배치하도록 하겠습니다. 그림8) 블록다이어그램 추가 그림9) 가상에러 기입 그림8과 같이 블록다이어그램을 코딩을 하고 임시로 가상 에러(그림9)를 입력단 쪽에 기입합니다. 그림10) Excel파일을 못 읽음 직접 실행해 보면 알겠지만 가상 에러를 발생하지 않았을때 데이터가 정상적으로 나오던 것이 가상에러를 넣고 나서 엑셀에서 어떻한 데이터를 불러오지 못하고 있습니다. 일단 문서파일(Word, Excel)등등을 처리할때 에러코드에 대해서 조심하시기 바랍니다. 혹시나 외부에서 에러코드가 들어오면 문서파일에 영향을 줄수 있습니다. Comunity Discord Link

LabVIEW bug - 엑셀저장오류(Excel_Save_Workbook.vi)

이미지
안녕하세요. 알렉스 입니다. 오늘은  NI_ReportGenerationToolkit.lvlib를 사용하다가 생기는 오류에 대해서 알려드리겠습니다. 이 오류는 제가 여러 프로젝트를 하다가 발견한 것인데 서로다른 Excel버전 또는 다른 LabVIEW버전을 사용할시 빈번하게 나타날수 있습니다. 그림1) 엑셀저장함수 사용시 에러발생  위 함수 를 사용하다가 그림1과 같은 에러가 발생시 크게 2가지 원인이 있을수 있습니다.  그림2) 'Save Report File.vi'에 들어갈때 창 위 오류는 엑셀을 해결하기 위한 오류로   함수를 더블 클릭하면 그림2와 같은 창이 나타납니다. 이때 Excel 카테고리로 들어가시면 됩니다. 그림3) MS Office 인증이 안된 상태 그림3과 같이 나타난다면 Excel이 인증을 받지 않았다는 뜻입니다. 해결하기 위해서는 정품 Excel를 사용하셔야 합니다.  그림4) MS Office 인증후 블록다이어그램 MS Office에 인증을 받은후 블록다이어그램을 열어보시면 실행파일이 깨져있다는 것을 알수 있습니다. 깨진 함수도 들어가봅니다. 그림5) 깨진 인보크노드 깨진 함수로 들어가다보면 인보크 노드가 원인인 것을 알수 있습니다. 그림6) 깨진 이유 그림6과 같은 경우는 주로 버전 차이에 따라 나타나는 현상입니다. 특히 오래된 MS Office를 사용할때 자주 나타난 증상이지만 해결방법은 간단합니다. 그림7) 우클릭후 변경  먼저 인보크노드 상태를 바꾸기 전에 연결노드는 잘 기억해 줍니다. 그리고 인보크 노드를 우클릭을 하면 그림7과 같이 여러 목록이 나타납니다. 이중에서 Save로 변경합니다. 그림8) 인보크 노드가 Save로 변경 그렇게 되면 기존에 연결되었던 연결노드가 모두 끊어지게 됩니다. 그리고 다시 그림7처럼 우클릭후 'Save As'로 변경해 줍니다. ...

LabVIEW bug - 포루프 논리적 에러(For Loop logic Error)

이미지
안녕하세요. 알렉스 입니다. 이전에는 LabVIEW를 하다가 발생하는 버그들이 있는데 그것을 시간 날때마다 글로 작성해서 올리도록 하겠습니다. 만약 해결 안되는 버그가 있다면 Discord : ALEX_CHOI(#3027) 이쪽으로 연락 바랍니다. 그럼 For Loop 논리적 에러에 대해서 설명해 드리겠습니다. 그림1) 프런트패널 GUI 일단 간단하게 I32(롱) 숫자형 컨트롤과 입력측 에러 클러스터를 생성합니다. 그림2) 블록다이어그램 코딩 블록다이어 그램에는 For루프 하나와 가상의 에러를 생성하기위한 클러스터 상수를 그림2처럼 생성합니다. 숫자형 컨트롤은 반복터미널에 연결하고 에러 클러스터 상수는 For루프를 통과해서 에러클러스터 인디게이터에 연결합니다. 그림3) 반복터미널에 0이 들어갈시 만약 숫자형 컨트롤 숫자가 0이면 에러가 생긴다 하더라도 에러 메세지가 인디게이터에 도달하지 않습니다. 왜냐하면 For루프 자체를 돌리지 않았고 결국 기본메세지만 에러 클러스터에 남기 때문입니다. 그림4) 반복터미널에 1이 들어갈시 숫자형 컨트롤이 1이 들어가야 그제서야 에러메세지를 내보냅니다. 그림5) For루프 에러의 순서도 프로젝트를 진행하다보니 이런 에러들이 많이 나오기 시작했습니다. 특히 LabVIEW 컴파일에서 에러라고 알려주지 않는 논리적 에러때문에 많이 어려운데 이런것들을 하나씩 정리해서 다음번에 또 생겼을때 대응하는것이 좋을것 같습니다. Discord Community Link