Implementing real time serial logging to app designer
    8 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Hi,
Firstly, I'm using an ardunio UNO and matlab to plot live data of a sine wave. The code uses serial comuunication and outputs the live data logging on matlab. The code is shown below. However, I'm trying to use MATLAB App designer to implemet my code and show the live data logging in app form. I've tried to move my code into the app but I get no output wave when running. Any help is greatly appricated as I'm not sure what is going on. Thanks.
MATLAB code:
clear all;
delete(instrfindall);
clear;
close all;
clc;
serialPort = 'COM3';            
plotTitle = 'Live Data Plot';  
xLabel = 'Time (s)';            
yLabel = 'Data';                
plotGrid = 'on';                
min = -1.5;                     
max = 1.5;                      
scrollWidth = 0;               
delay = .01;                   
%Define Function Variables
time = 0;
data = 0;
count = 0;
%Set up Plot
plotGraph = plot(time,data,'-mo',...
                'LineWidth',0.8,...
                'MarkerEdgeColor','b',...
                'MarkerFaceColor',[.49 1 .63],...
                'MarkerSize',2);
title(plotTitle,'FontSize',18);
xlabel(xLabel,'FontSize',15);
ylabel(yLabel,'FontSize',15);
axis([0 10 min max]);
grid(plotGrid);
%Open Serial COM Port
s = serial(serialPort);
disp('Close Plot to clear data');
fopen(s);
% start stopwatch timer
tic 
%Loop when Plot is Active
while time <=50
    %Read Data from Serial as Float
    dat = fscanf(s,'%f'); 
    if(~isempty(dat) && isfloat(dat)) %Make sure Data Type is Correct        
        count = count + 1;    
        time(count) = toc;    %stop the stopwatch and extract time
        data(count) = dat(1); %Extract 1st Data Element         
        %Set Axis according to Scroll Width
        if(scrollWidth > 0)
        set(plotGraph,'XData',time(time > time(count)-scrollWidth),'YData',data(time > time(count)-scrollWidth));
        axis([time(count)-scrollWidth time(count) min max]);
        else
        set(plotGraph,'XData',time,'YData',data);
        axis([0 time(count) min max]);
        end
        %Allow MATLAB to Update Plot
        pause(delay);
    end
end
%Close Serial COM Port and Delete useless Variables
fclose(s);
clear count dat delay max min plotGraph plotGrid plotTitle s ...
        scrollWidth serialPort xLabel yLabel;
% APP DESIGNER CODE
classdef sinwave_2 < matlab.apps.AppBase
    % Properties that correspond to app components
    properties (Access = public)
        UIFigure     matlab.ui.Figure
        StartButton  matlab.ui.control.Button
        UIAxes       matlab.ui.control.UIAxes
    end
    properties (Access = private)
        a
    end
    % Callbacks that handle component events
    methods (Access = private)
        % Code that executes after component creation
        function startupFcn(app)
            app.a = arduino('COM3','uno');
        end
        % Button pushed function: StartButton
        function StartButtonPushed(app, event)
clear all;
delete(instrfindall);
clear;
close all;
clc;
time = 0;
data = 0;
count = 0;
app.a = serial(serialPort);
disp('Close Plot to clear data');
fopen(app.a);
% start stopwatch timer
tic 
%Loop when Plot is Active
while time <=50
    %Read Data from Serial as Float
    dat = fscanf(s,'%f'); 
    if(~isempty(dat) && isfloat(dat)) %Make sure Data Type is Correct        
        count = count + 1;    
        time(count) = toc;    %stop the stopwatch and extract time
        data(count) = dat(1); %Extract 1st Data Element         
        %Set Axis according to Scroll Width
        if(scrollWidth > 0)
        set(plotGraph,'XData',time(time > time(count)-scrollWidth),'YData',data(time > time(count)-scrollWidth));
        axis([time(count)-scrollWidth time(count) min max]);
        else
        set(plotGraph,'XData',time,'YData',data);
        axis([0 time(count) min max]);
        end
        %Allow MATLAB to Update Plot
        pause(delay);
    end
end
%Close Serial COM Port and Delete useless Variables
fclose(s);
clear count dat delay max min plotGraph plotGrid plotTitle s ...
        scrollWidth serialPort xLabel yLabel;
        end
    end
    % Component initialization
    methods (Access = private)
        % Create UIFigure and components
        function createComponents(app)
            % Create UIFigure and hide until all components are created
            app.UIFigure = uifigure('Visible', 'off');
            app.UIFigure.Color = [0.651 0.651 0.651];
            app.UIFigure.Position = [100 100 640 480];
            app.UIFigure.Name = 'MATLAB App';
            % Create UIAxes
            app.UIAxes = uiaxes(app.UIFigure);
            title(app.UIAxes, 'Title')
            xlabel(app.UIAxes, 'X')
            ylabel(app.UIAxes, 'Y')
            zlabel(app.UIAxes, 'Z')
            app.UIAxes.XGrid = 'on';
            app.UIAxes.YGrid = 'on';
            app.UIAxes.Position = [34 87 392 359];
            % Create StartButton
            app.StartButton = uibutton(app.UIFigure, 'push');
            app.StartButton.ButtonPushedFcn = createCallbackFcn(app, @StartButtonPushed, true);
            app.StartButton.BackgroundColor = [0.102 0.5961 0.7882];
            app.StartButton.FontWeight = 'bold';
            app.StartButton.FontColor = [1 1 1];
            app.StartButton.Position = [473 361 137 61];
            app.StartButton.Text = 'Start';
            % Show the figure after all components are created
            app.UIFigure.Visible = 'on';
        end
    end
    % App creation and deletion
    methods (Access = public)
        % Construct app
        function app = sinwave_2
            % Create UIFigure and components
            createComponents(app)
            % Register the app with App Designer
            registerApp(app, app.UIFigure)
            % Execute the startup function
            runStartupFcn(app, @startupFcn)
            if nargout == 0
                clear app
            end
        end
        % Code that executes before app deletion
        function delete(app)
            % Delete UIFigure when app is deleted
            delete(app.UIFigure)
        end
    end
end
0 commentaires
Réponses (0)
Voir également
Catégories
				En savoir plus sur Develop Apps Using App Designer dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
