如何绘制从 AppDesigner 应用程序到 Matlab Web App 服务器的实时数据?
How to plot real time data from an AppDesigner application to a Matlab Web App Server?
我有一个 appdesigner 应用程序,其中来自两个传感器的数据通过 Arduino 实时绘制成图表。这些传感器是:超声波传感器和光传感器。 appdesigner 中的应用程序通过 Arduino Uno 读取数据并将数据绘制到 UIAxes 组件中。
应用的私有属性:
properties (Access = private)
a;
h;
h2;
h3;
btnSt = 0;
initialTime = 2;
end
执行应用程序时配置 Arduino 的代码:
function startupFcn(app)
movegui(app.UIFigure, "center")
app.a = arduino;
app.a.configurePin('A0', 'AnalogInput');
app.a.configurePin('A1', 'AnalogInput');
end
按下按钮时在 UIA 轴中读取和绘制数据的代码:
function StartPushed(app, event)
cla(app.UIAxes, "reset");
cla(app.UIAxes2, "reset");
app.h = animatedline(app.UIAxes, "Color", "Black");
app.h2 = animatedline(app.UIAxes2, "Color", "Black");
start = 1;
% stops the app when the stop button is pressed
while app.btnSt == 0
fotoRes = readVoltage(app.a, 'A0');
distance = readVoltage(app.a, 'A1');
distCm = (3027.4/distance)^1.2134;
tp = app.initialTime - start;
% plot the data of the light sensor
addpoints(app.h, tp, fotoRes);
% plot the data of the ultrasonic sensor
addpoints(app.h2, tp, distCm);
drawnow
app.initialTime = app.initialTime + 1;
end
end
总而言之,有没有一种方法可以通过 Matlab Web 应用程序服务器执行相同的操作?当然,以实时获取数据为条件。
感谢任何帮助。
你需要做的是一个网络服务,但我不太确定Matlab是否可以用来编码一个网络服务,但是 Matlab 可以使用 http 请求从 Web 服务读取数据...让我解释一下...
这是我的本地设置:
传感器->(读取电压)->Arduino A0 引脚->(USB 串行通信)->安装了 Matlab 的本地计算机
这完全可以正常工作,但是当您将 matlab 应用程序托管在其他地方的网络服务器中时,数据流将如下所示:
传感器->Arduino-[将arduino连接到互联网的东西]->Web服务->WebApp
所以还有两个额外的步骤需要考虑:
- 你打算如何将 arduino 连接到互联网? 可能有两种可能的解决方案:使用 esp8266 将你的 arduino 直接连接到互联网并使 arduino 直接 make将 HTTP POST 连接到 Web 服务,或者将 arduino 连接到您的计算机,然后使用您的计算机制作 HTTP POST.
- 你打算如何制作网络服务? 在这种情况下,网络服务是用你的 arduino 信息接收 POSTS 的东西,然后您的 WebApp 可以通过 HTTP 请求请求信息,(here 是一些关于如何使用 Matlab 从 WebService 读取数据的文档)。也许可以在 matlab 上编写一些代码,使您的应用程序直接接收 HTTP POSTS 并处理它们,看起来像这样:
传感器->Arduino-[将 arduino 连接到互联网的东西]->[应用程序中的 Web 服务->WebApp]
但我还没有找到关于如何做到这一点的任何信息...替代方法是使用现有服务,例如 Arduino Cloud IoT or aREST 我推荐的架构如下所示:
传感器->带esp8266的Arduino->Arduino IoT API->WebApp
希望对您有所帮助,祝您好运!
我有一个 appdesigner 应用程序,其中来自两个传感器的数据通过 Arduino 实时绘制成图表。这些传感器是:超声波传感器和光传感器。 appdesigner 中的应用程序通过 Arduino Uno 读取数据并将数据绘制到 UIAxes 组件中。
应用的私有属性:
properties (Access = private)
a;
h;
h2;
h3;
btnSt = 0;
initialTime = 2;
end
执行应用程序时配置 Arduino 的代码:
function startupFcn(app)
movegui(app.UIFigure, "center")
app.a = arduino;
app.a.configurePin('A0', 'AnalogInput');
app.a.configurePin('A1', 'AnalogInput');
end
按下按钮时在 UIA 轴中读取和绘制数据的代码:
function StartPushed(app, event)
cla(app.UIAxes, "reset");
cla(app.UIAxes2, "reset");
app.h = animatedline(app.UIAxes, "Color", "Black");
app.h2 = animatedline(app.UIAxes2, "Color", "Black");
start = 1;
% stops the app when the stop button is pressed
while app.btnSt == 0
fotoRes = readVoltage(app.a, 'A0');
distance = readVoltage(app.a, 'A1');
distCm = (3027.4/distance)^1.2134;
tp = app.initialTime - start;
% plot the data of the light sensor
addpoints(app.h, tp, fotoRes);
% plot the data of the ultrasonic sensor
addpoints(app.h2, tp, distCm);
drawnow
app.initialTime = app.initialTime + 1;
end
end
总而言之,有没有一种方法可以通过 Matlab Web 应用程序服务器执行相同的操作?当然,以实时获取数据为条件。 感谢任何帮助。
你需要做的是一个网络服务,但我不太确定Matlab是否可以用来编码一个网络服务,但是 Matlab 可以使用 http 请求从 Web 服务读取数据...让我解释一下...
这是我的本地设置:
传感器->(读取电压)->Arduino A0 引脚->(USB 串行通信)->安装了 Matlab 的本地计算机
这完全可以正常工作,但是当您将 matlab 应用程序托管在其他地方的网络服务器中时,数据流将如下所示:
传感器->Arduino-[将arduino连接到互联网的东西]->Web服务->WebApp
所以还有两个额外的步骤需要考虑:
- 你打算如何将 arduino 连接到互联网? 可能有两种可能的解决方案:使用 esp8266 将你的 arduino 直接连接到互联网并使 arduino 直接 make将 HTTP POST 连接到 Web 服务,或者将 arduino 连接到您的计算机,然后使用您的计算机制作 HTTP POST.
- 你打算如何制作网络服务? 在这种情况下,网络服务是用你的 arduino 信息接收 POSTS 的东西,然后您的 WebApp 可以通过 HTTP 请求请求信息,(here 是一些关于如何使用 Matlab 从 WebService 读取数据的文档)。也许可以在 matlab 上编写一些代码,使您的应用程序直接接收 HTTP POSTS 并处理它们,看起来像这样:
传感器->Arduino-[将 arduino 连接到互联网的东西]->[应用程序中的 Web 服务->WebApp]
但我还没有找到关于如何做到这一点的任何信息...替代方法是使用现有服务,例如 Arduino Cloud IoT or aREST 我推荐的架构如下所示:
传感器->带esp8266的Arduino->Arduino IoT API->WebApp
希望对您有所帮助,祝您好运!