나는 동시에 카메라 (즉, 이미지)와 아날로그 전압을 MATLAB을 사용하여 데이터를 얻고 싶다.Matlab의 데이터 수집 도구 상자와 이미지 수집 도구 상자를 동기화 할 수 있습니까?
clear all
% Prepare camera
vid = videoinput('gentl', 1, 'Mono8');
src = getselectedsource(vid);
vid.FramesPerTrigger = 1;
vid.TriggerRepeat = Inf;
triggerconfig(vid, 'hardware', 'DeviceSpecific', 'DeviceSpecific');
src.FrameStartTriggerMode = 'On';
src.FrameStartTriggerActivation = 'RisingEdge';
% prepare DAQ
s=daq.createSession('ni');
s.addAnalogInputChannel('Dev1','ai1','Voltage');
fid = fopen('log.txt','w');
lh = s.addlistener('DataAvailable',@(src,event)SaveData(fid,event));
s.IsContinuous = true;
% Take data
s.startBackground();
start(vid)
N=10;
for ii=1:N
im(:,:,ii)=getsnapshot(vid);
end
% end code
delete(lh);
fclose('all');
stop(vid)
delete(vid)
함수 SaveData
는 :
function SaveData(fid,event)
time = event.TimeStamps;
data = event.Data;
fprintf(fid, '%f,%f\n ', [time data]);
end
I는 I는 데이터 수집 도구를 사용하여 전압을 판독하는 IMAQ 툴박스를 사용하는 카메라의 다음 코드 (NI-USB 장치를 판독)
이미지와 log.txt 파일을 daq trace (시간과 데이터)와 함께 얻지 만 어떻게 (카메라를 트리거하는) 외부 트리거링이나 다른 두 클럭을 동기화하여 사용할 수 있습니까? 이 예제에서 daq는 TTL 신호 (@ 50 Hz)를 트리거하는 카메라를 읽으므로 각 TTL 펄스를 이미지에 할당하려고합니다.
부록 : 나는 검색을 봤는데 주제에 (이 one 등) 몇 가지 논의를 발견하고, 매스 웍스의 웹 사이트에서 발견되지만, 대답을 발견하지 않은 examples을 읽고 . 문서는 Start a Multi-Trigger Acquisition on an External Event을 보여 주지만, 설명 된 수집은 DAQ 기반 입력에만 관련이 있으며 카메라 기반 입력이 아닙니다 (포 그라운드에서도 작동 함).
아무것도가 MATLAB에 존재하지 칼; Mex 기반의 외부 C++ 스레드 라이브러리 또는 Simulink 기반 솔루션을 사용할 수 있습니다. – Arcturus
전압을 기록하기 위해 어떤 장치를 사용합니까? –
왜 중요한지는 모르겠지만 코드에서 NI 디바이스 (USB6009와 같은 아날로그 전압 USB 판독기)를 볼 수 있습니다. –