2016. 4. 14. 14:15

시리얼 통신으로 센서로부터 들어오는 데이터를 실시간으로 plot하기

시리얼 통신으로 센서로부터 컴퓨터로 실시간으로 들어오는 데이터를 매트랩에서 실시간으로 plot하기위해 메카솔루션 오픈랩이라는 블로그에서 퍼온 소스코드를 조금 수정했다. 실시간 plot을 멈추고 포트를 닫는 과정이 조금 제대로 구현이 안되었지만 대충 테스트 하기에는 문제 없는듯...

센서쪽에서는 문자열로 데이터를 보내줘야함.




clear all; clc;

delete(instrfindall) % 현재 연결되어 있는 시리얼포트들을 다 지웁니다.

s2 = serial('COM6', 'BaudRate', 38400); % 아두이노에서 연결했던 시리얼포트 번호를 입력합니다. 제꺼는 29번이네요.

fopen(s2); % 포트를 엽니다.

time = 0;


datalen = 100;

data = zeros(1,datalen);

% for i = 1:datalen;

while (1)

    time = time + 1;

    a = str2num(fscanf(s2));

    

    data(1:end-1) = data(2:end);

    data(end) = a;

    idx = time-datalen+1:1:time;

    

%     plot(idx, data, '*');

    plot(idx, data, 'linewidth', 2);

    axis([min(idx) max(idx) 0 2000]);

    drawnow; % Plot을 계속 업데이트해줍니다. 마치 리얼타임처럼...

end

%%

fclose(s2) % 포트를 닫고

delete(instrfindall) % 모든 시리얼포트 정보를 지웁니다. 다시 아두이노 프로그램을 열 때 에러를 방지하기 위해서...