Matlab-Arduino 实时绘图

标签 matlab arduino serial-communication

我正在尝试将数据从我的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

关于Matlab-Arduino 实时绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42493266/

相关文章:

flutter - 通过 USB 端口进行串行交互以在 Flutter 上开发 Windows 应用程序

python - 使用 Scipy 与 Matlab 拟合对数正态分布

matlab - 如何在 MATLAB 对象中显示枚举值

C# Process Start 需要带双引号的参数 - 它们消失了

c - 串行通信 C/C++ Linux 线程安全吗?

linux - ESP8266 Linux : Programming and Flashing

c++ - 为什么 arraysize 在我的 mex 代码中被识别为零?

windows - Cygwin - 串行端口列在/dev 但 stty 报告无效参数

c - 为什么此代码会使 LED 发红光?

Arduino Ethernet shield v1.1 ENC28J60 MAC地址