방금 MATLAB을 사용하여 데이터 수집 보드에서 데이터를 수집하기 시작했으며 연속적으로 데이터를 수집하는 기능이 필요했습니다 (예 : Ctrl + C 중 함수). 이렇게하려면 32 비트 Windows OS에서 데이터 수집 도구 상자를 사용하고 있습니다. matlab에 도움의 문서와이 사이트에 대한 답변의 몇 가지를 바탕으로콜백 및 영구 변수를 사용하여 MATLAB에서 데이터를 지속적으로 수집합니다.
는, 나는 발견 내가해야 내 입력 핸들에 채널을 추가 한 후 :
- 은 Inf를
- 내 'SamplesPerTrigger'을 설정 영구 가변
에 데이터를 추가 일부 하위 메뉴 콜에 'TimerFcn'
내 코드는 다음과 같습니다 초기 아날로그 입력이 확실히 제대로 작동
function acquire_arena_test(samprate,daq_device ,device_ID ,channels, saveroot)
setup.SampleRate = samprate;
setup.DAQdevice = {daq_device, device_ID};
setup.AIChannels = channels;
setup.SaveRoot = {saveroot};
ai = analoginput(setup.DAQdevice{1},setup.DAQdevice{2});
addchannel(ai,[setup.AIChannels]);
set(ai,'SamplesPerTrigger',Inf);
set(ai,'TimerPeriod',0.5);
set(ai,'TimerFcn',{@AcquireData,ai});
start(ai);
while(strcmpi(get(ai,'Running'),'On'))
pause(1)
end
stop(ai);
time = datestr(now,30);
save([saveroot time], 'data');
delete(ai);
clear ai;
function AcquireData(hObject, ~)
persistent totalData;
data = getdata(hObject);
if isempty(totalData)
totalData =data;
else
totalData = [totalData; data];
end
. 나는 많은의 순열을 통해 'TimerFcn'에 AcquireData 콜백을 제공하려고 시도했다. 내가받는 오류는
입니다. ==> acquire_arena_test> AcquireData를 사용한 오류 입력 인수가 너무 많습니다.
경고 : TimerFcn 콜백을 사용할 수 없습니다. 콜백을 사용하려면 TimerFcn 속성을 설정하십시오. `
도움을 받으려면 미리 감사드립니다.
'daqreset'와'all all'을 실행 한 후, 함수를 호출했을 때'acquire_arena_test (1000, 'nidaq', 'Dev1', [0 : 7], 'C : \ .... \') . 'SamplesPerTrigger'를 주석 처리하면 출력 파일을 저의 saveroot에 저장하기 때문에 8 개의 채널에 입력이 들어옵니다. –