MATLAB Client - example of communication between mbed and MATLAB
Diff: Experiment_Example_old_MATLAB.m
- Revision:
- 5:1497fccca82e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Experiment_Example_old_MATLAB.m Tue Sep 22 09:08:00 2015 -0400 @@ -0,0 +1,54 @@ +function output_data = Experiment_Example_MATLAB() + figure(1); clf; % Create an empty figure to update later + subplot(211) + h1 = plot([0],[0]); + +% h1 + set(h1,'XData',[],'YData', []); + ylabel('Position (counts)'); + subplot(212) + h2 = plot([0],[0]); + %h2.XData = []; h2.YData = []; + set(h2,'XData',[],'YData',[]); + ylabel('Velocity (counts/s)'); + + % This function will get called any time there is new data from + % the FRDM board. Data comes in blocks, rather than one at a time. + function my_callback(new_data) + t = new_data(:,1); % time + pos = new_data(:,2); % position + vel = new_data(:,3); % velocity + N = length(pos); + tt = get(h1,'XData'); + yy = get(h1,'YData'); + + tt(end+1:end+N) = t; % Update subplot 1 + yy(end+1:end+N) = pos; + set(h1,'XData',tt,'YData',yy); + + tt = get(h2,'XData'); + yy = get(h2,'YData'); + + tt(end+1:end+N) = t; % Update subplot 2 + yy(end+1:end+N) = vel; + + set(h2,'XData',tt,'YData',yy); + end + + frdm_ip = '192.168.1.100'; % FRDM board ip + frdm_port= 11223; % FRDM board port + params.callback = @my_callback; % callback function + params.timeout = 2; % end of experiment timeout + + % The example program provided takes two arguments + v1 = 1.0; % pwm applied for first second + v2 = 0.0; % pwm applied for second second + input = [v1 v2]; % input sent to FRDM board + output_size = 3; % number of outputs expected + + output_data = RunExperiment(frdm_ip,frdm_port,input,output_size,params); + +end + + +