只是简短描述我想要实现的目标: 我有一个水平安装的杠杆,带有一个电位计,用于控制计算机屏幕上的光标。我在Windows XP机器上使用Matlab 2011a与Psychtoolbox和Data Acquisition Toolbox进行此操作。 DAQ是Agilent U2300 A.经过多种不同的方法,我最终得到了这个(示例代码):
ai = analoginput('agilentu2300', 0); % creates the analog object with our card
ch = addchannel(ai,1); % adds the channel for the potentiometer
set(ai,'InputType','SingleEnded'); % generates absolute values
set(ai,'SampleRate',1000); % sampling rate
set(ai,'SamplesPerTrigger',Inf); % continuous recording
start(ai); % starts the analog object
running = 1;
while running == 1
mySample = getData(ai,1) % acquire one sample
drawThisOnTheScreenAtXCoordinate(mySample); % drawsample on screen
experimentEnded = isExperimentOver(); % check wether experiment is over
if experimentEnded == 1 % decide wether to quit the program
running = 0;
end
end
stop(ai) % stops the analog objects
experimentData = getData(ai); % acquires all written data
这很有效。我还包括一个时间检查,所以这个while循环不会像CPU允许的那样快。它被限制在每秒约200个循环,我得到相同数量的样本。但实际上这些不是明显的样本。如果我检查不同的样本,我每秒会得到大约15个不同的样本,所以15 Hz,这不足以使光标在屏幕上平滑移动。 我也尝试使用命令getSample,结果给了我相同的结果。
我希望我做错了什么,有人知道如何以不同的方式做。 我也愿意接受不同语言(最好是Python)甚至不同DAQ硬件的不同方法的建议。