最近、MATLAB を使用してデータ収集ボードからデータを収集し始めたばかりで、継続的にデータを収集する関数が必要でした (つまり、ctrl^C で関数を終了するまで)。これを行うために、32 ビット Windows OS でデータ取得ツールボックスを使用しています。
matlab ヘルプのドキュメントとこのサイトのいくつかの回答に基づいて、チャネルを入力ハンドルに追加した後、次のことを行う必要があることがわかりました。
- 「SamplesPerTrigger」を Inf に設定します
- 「TimerPeriod」を何らかの値に設定して、「TimerFcn」をトリガーします
- 「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 プロパティを設定します。`
助けてくれてありがとう。