Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab Arduino实时绘图_Matlab_Arduino_Serial Communication - Fatal编程技术网

Matlab Arduino实时绘图

Matlab Arduino实时绘图,matlab,arduino,serial-communication,Matlab,Arduino,Serial Communication,我正在尝试将数据从arduino发送到matlab并使用GUI。我想在没有按下按钮的情况下继续读取数据。为了做到这一点,我必须使用fscanf函数,但我不知道把它放在哪里。肯定有一个while循环等待事件(如按下的按钮),该函数应该放在其中。我只是一个初学者,所以这对你来说可能是个愚蠢的问题。 提前谢谢你 function varargout = UltraPlot(varargin) global a; global k; gui_Singleton = 1; gui_State = str

我正在尝试将数据从arduino发送到matlab并使用GUI。我想在没有按下按钮的情况下继续读取数据。为了做到这一点,我必须使用fscanf函数,但我不知道把它放在哪里。肯定有一个while循环等待事件(如按下的按钮),该函数应该放在其中。我只是一个初学者,所以这对你来说可能是个愚蠢的问题。 提前谢谢你

function varargout = UltraPlot(varargin)

global a;
global k;
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
               'gui_Singleton',  gui_Singleton, ...
               'gui_OpeningFcn', @UltraPlot_OpeningFcn, ...
               'gui_OutputFcn',  @UltraPlot_OutputFcn, ...
               'gui_LayoutFcn',  [] , ...
               'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
disp('Ultraplot');


function UltraPlot_OpeningFcn(hObject, eventdata, handles, varargin)

global a;
global k;
a = serial('COM3');
fopen(a);
handles.output = hObject;


guidata(hObject, handles);


disp('Opening');


function varargout = UltraPlot_OutputFcn(hObject, eventdata, handles) 

varargout{1} = handles.output;
global a;
global k;
disp('varargout');

function Start_Callback(hObject, eventdata, handles)

global a;
global k;
fprintf(a,'%d',1);
disp('Button pressed');

您必须将Matlab设置为在while循环中等待来自Arduino的任何数据,请检查以下示例代码:

clear;clc;
S=serial('com18'); % Create an S Object
data=0;
set(S,'inputbuffersize',4096,'timeout',20); % Set serial communication     parameter
fopen(S); % Open serial communcation

   while (1)
        if s.bytesavailable>0 % If data from Arduino is available
          data=fscanf(S);
          data = str2num(data);
          % Do whatever you want with data here...
        end
     data=0;
   end