이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
백그라운드에서 데이터를 수집하고 실시간 그래프 업데이트 표시
이 예제는 MATLAB®이 계속 실행되는 동안 콜백을 사용하여 백그라운드에서 데이터를 수집하는 방법을 보여줍니다.
백그라운드 수집은 하드웨어가 데이터를 수집하는 즉시 해당 데이터에 액세스하거나 오류가 발생할 때 이를 처리하기 위해 콜백을 사용합니다. 반면, 포그라운드 수집의 경우 MATLAB는 전체 수집이 완료될 때까지 대기한 후에야 다음 명령을 실행할 수 있습니다. 이 예제에서는 ID가 Audio1인 마이크에서 백그라운드에서 데이터를 수집하고, 수집이 진행되는 동안 그래프를 실시간으로 업데이트하는 콜백을 정의합니다.
장치 검색 및 설정
컴퓨터에서 사용 가능한 장치 목록을 확인하고, 사용하려는 마이크를 찾으십시오. 여기에 나열된 일부 항목은 이 예제에서 사용된 공급업체 ID와 장치 ID, 즉 장치 ID가 Audio1인 DirectSound 헤드셋 마이크를 나타냅니다.
daqlist
VendorID DeviceID Description
_____________ ________ ____________________________________________________
"directsound" "Audio1" "DirectSound Headset Microphone (Plantronics BT600)"Audio1에 마이크 입력 채널을 가진 directsound DataAcquisition 객체를 생성합니다.
mic = daq("directsound"); ch = addinput(mic,"Audio1",1,"audio");
백그라운드 수집 및 실시간 플롯 설정
ScansAvailableFcn 속성을 사용하여 콜백 함수를 구성하고, 백그라운드 수집 데이터를 바탕으로 실시간 플롯을 업데이트합니다. 이 예제에서는 다음 절에서 정의된 plotMyData 콜백 함수를 사용합니다.
누적된 스캔 횟수가 ScansAvailableFcnCount 속성의 값을 초과하면 콜백이 트리거됩니다. 기본적으로 이 값은 Rate/10로 설정되어 있으므로, 콜백은 초당 10회 트리거됩니다.
mic.ScansAvailableFcn = @plotMyData;
백그라운드에서 5초 동안 실행되는 수집을 시작합니다.
start(mic,"Duration",seconds(5))실시간으로 업데이트되는 선 플롯을 생성하려면, 데이터 수집 객체 mic의 UserData 속성에 애니메이션 선 플롯을 할당하십시오. 백그라운드 수집 중에 콜백 함수는 이 그래프에 데이터를 동적으로 추가합니다.
figure; xlabel("Time (s)"); ylabel("Amplitude"); mic.UserData = animatedline;
콜백 함수
이 콜백 함수는 백그라운드에서 수집된 데이터로 실시간 그래프를 업데이트합니다. 이 함수는 콜백 소스와 이벤트 정보라는 두 가지 입력값을 받습니다. MATLAB는 콜백을 트리거하는 DataAcquisition 객체를 첫 번째 입력값인 src로 전달합니다. 두 번째 입력에는 이벤트 정보가 포함되어 있으나, 이 예제에서는 사용되지 않습니다. 이 함수는 src에서 데이터를 읽어와, 해당 데이터를 UserData 속성에 저장된 애니메이션 선에 추가함으로써 실시간 그래프를 업데이트합니다.
function plotMyData(src,~) [data,timestamps,~] = read(src,src.ScansAvailableFcnCount,OutputFormat="Matrix"); addpoints(src.UserData,timestamps,data); end
백그라운드 수집 동안 마이크에 대고 말하면 그래프가 실시간으로 업데이트되는 것을 확인할 수 있습니다.
