Q&A 게시판

cancel
Showing results for 
Search instead for 
Did you mean: 
Reply

구분된 스프레드시트 파일에 쓰기 함수 에러 문의

Solved!
Go to solution
Highlighted

TCP를 통해 데이터를 받고 그 데이터를 스프레드시트열에 각 행과 열에 저장하고 싶습니다.

그래서 구분된 스프레드시트 파일에 쓰기 함수를 사용하였습니다.

단독vi에서 테스트 해본결과 문제가 발생하지 않았지만

프로젝트에 넣어 exe파일로 실행할 경우에만 사진처럼 에러가 발생하며 동작하지않습니다.

무엇이 문제인가요?

아니면 다른 방식을 알려주시면 감사합니다.

각 행과 열에 각각 저장하고싶습니다.

감사합니다.

0 Kudos
Message 1 of 9
(261 Views)

그거 이상하네요. 내용만 봐서는 원인이 뭔지 모르겠네요. 

 

프로젝트 파일 압축해서 올려주시면 제가 한번 해볼게요. 

0 Kudos
Message 2 of 9
(253 Views)

프로젝트 파일을 통해 내용을 보시면 되겠습니다.

subVITCP.vi 에 구분된 스프레드시트 파일에 쓰기 함수가 존재합니다.

감사합니다.

0 Kudos
Message 3 of 9
(248 Views)
Solution
Accepted by topic author HoYa_rese
02-17-2019 08:13 PM

올려주신 코드를 보았습니다. 에러가 나는 이유는 vi를 런타임으로 호출하는 방식을 썼기 때문입니다. 즉 VI를 subVI 형태로 호출하는 것이 아니라 참조형태로 호출하고 있습니다. 

이렇게 되면 VI가 의존하는 라이브러리(여기서는 스프레드 시트 쓰기에 해당)가 exe 파일에 제대로 포함되지 못합니다. 이럴 경우 두 가지 방법이 있습니다.

 

1. 참조 형태가 아니라 subVI로써 VI를 호출합니다. (VI 참조 열기 사용 하지 않음) 

2. 의존하는 라이브러리를 강제로 main.vi에 포함시키는 겁니다. 첨부파일의 스크린샷처럼 빌드파일에 포함은 시키되 실행은 되지 않게 합니다.

 

1 번의 해결 방법에 가장 바람직하며 급할 경우 2번을 사용하셔도 무방합니다. 

Message 4 of 9
(245 Views)

추가로 발견한 해결책: 참조로 여는 VI를 모두 시작 VI로 두고 빌드하면 쉽게 문제가 해결됩니다. 위의 2번 보다 이 방법을 사용하세요. 

0 Kudos
Message 5 of 9
(239 Views)

전부 시작vi로 한다는 것이 exe파일을 빌드할때 사진부분을 말하는 것인가요?

변경 후 실행해보니 한번에 모든 vi가 다 켜지닙니다..ㅠㅠ

 

0 Kudos
Message 6 of 9
(235 Views)

그럼 위의 2번 방법으로 해 보세요.

0 Kudos
Message 7 of 9
(231 Views)

2번 방법에 대하여 상세하게 설명좀 부탁드려도될까요?

0 Kudos
Message 8 of 9
(218 Views)

문제가 되는 "스프레드시트 파일에 쓰기" 함수는 랩뷰 내부 라이브러리 함수입니다. exe 파일을 빌드할 때 이것이 포함이 되어야 제대로 프로그램 실행이 됩니다. 

일반적으로 랩뷰에서 exe 파일을 만들 때 이러한 의존성을 알아서 포함시켜줍니다. 예를 들어 다음과 같이 호출한다고 합시다. 

main.vi --> A.vi --> B.vi (랩뷰내부함수)

모두 subVI 형태로 호출하는 경우, exe 파일을 만들 때 랩뷰는 main.vi가 최종적으로 B.vi를 필요로 한다는 것을 알아 자동적으로 B.vi를 exe에 포함시킵니다. (A.vi의 실행버튼이 깨지면 main.vi의 실행버튼도 깨짐)

만일 위 호출방식을 참조형태로 하게 되면 main.vi는 A.vi 의 내용을 볼수가 없어 A.vi가 B.vi를 호출하는지 모릅니다. 따라서 B.vi를 자동적으로 포함시키지 못합니다. (A.vi가 실행버튼이 깨진 상태이어도 main.vi는 깨지지 않음)

이러한 이유때문에 .exe 실행 시 B.vi를 찾을 수 없다고 하는 겁니다. 

이를 해결하기 위해 B.vi를 main.vi에 강제적으로 포함시키는 겁니다. 이렇게하면 exe를 만들때 B.vi가 포함이 됩니다. 물론 실질직으로 A.vi가 B.vi를 호출하지만 어쨌든 B.vi가 exe 파일에 포함되어 있으므로 에러는 나지 않습니다. 

 

 

0 Kudos
Message 9 of 9
(213 Views)