09-28-2024 12:55 AM - 편집 09-28-2024 12:58 AM
현재
FFT 로 스캐너 타이밍 맞춰서 거리값을 저장 하고있는데
일단 데이터저장에 대해서는 배열초기화를 만들고 빈배열에 배열 삽입하기로 거리값을 시프트 레지스터로 인덱스 하나하나 넣고있습니다.
그후 거리값 잘라내기로 배열초기화로 만들어진 원소 제거 하였구요.
제가하고싶은것은
루프가 스캐닝이 끝날때마다 (예를들면 1000번째 루프마다) 마다 거리값이 다른열에 저장되도록 하고싶은겁니다.
지금 생각한것은 배열 잘라내기로 n번째 마다 잘라내어 활용하는것인데 다른 쉬운 아이디어 가없을까요?
혹시 모르니 첨부파일도 업로드합니다.
일단 버전때문에 VI 는 열어보지 못했습니다.
알아두셔야 하는게, 증가하는 배열을 가진 루프는 점점 느려집니다. 처리해야 하는 데이터가 계속 증가하기 떄문이죠.
때문에 DAQ 같은 일정 속도를 요구하는 함수들은 같은 루프 안에 지연이나 배열, 데이터 연산과 같은 코드를 추가하지 않습니다.
그래서 Queue 등을 이용한 구조가 필요로 합니다.
생산자에서 DAQ 로 데이터를 취득하고, 이를 Queue 로 소비자 쪽으로 보내, 소비자에서 스프레드시트 연속 쓰기 등으로 데이터를 바로바로 파일 쓰기 해 버리는게 좋습니다.
일정 주기를 필요로 한다면 루프를 하나 더 추가해 타이머 역활을 하게 만들 수도 있습니다.
주기야 DAQ 타이밍으로 제어 할 수 있으므로.. 생산자 소비자 구조 정도에서 끝내는게 맞을 것으로 보입니다.
현재 말씀처럼 생산자 소비자 구조를 사용했는데요
소비자에서 배열을 적재해서 스프레드쓰기를 사용 하는 형식으로 하였습니다.
그런데 이러면 문제없을까요 ?
루프안에 배열이 계속적재되면 속도가 느려지지않을까요?
스프레드 연속쓰기 라는 vi 가 없어서 고민입니다 .
코드를 버전때문에 확인하지 못했습니다.
일단 제대로 이해 하셨다면 코드를 많이 정리 하셨을 겁니다.
분명하게 속도 차이가 보일겁니다.