【问题标题】:How to plot real time data from an AppDesigner application to a Matlab Web App Server?如何将 AppDesigner 应用程序中的实时数据绘制到 Matlab Web 应用服务器?
【发布时间】:2021-11-29 08:06:51
【问题描述】:

我有一个 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

按下按钮时读取和绘制 UIAxes 中的数据的代码:

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 plot arduino matlab-deployment


    【解决方案1】:

    你需要做的是一个 web 服务,但我不确定 Matlab 是否可以用来编码一个 Web 服务,但是 Matlab 可以从使用 http 请求的 Web 服务...让我解释一下...

    这是你的本地设置的样子:

    传感器->(读取电压)->Arduino A0 引脚->(usb 串行通信)->使用 Matlab 的本地计算机

    这完全没问题,但是当您将 matlab 应用程序托管在其他地方的 Web 服务器中时,数据流将如下所示:

    传感器->Arduino-[将 arduino 连接到互联网的东西]->Web Service->WebApp

    所以还有两个额外的步骤需要考虑:

    1. 您打算如何将 arduino 连接到 Internet? 可能有两种可能的解决方案:使用 esp8266 将您的 arduino 直接连接到 Internet,并使 arduino 直接将 HTTP POST 发送到 Web 服务,或者将 arduino 连接到您的计算机,然后使用您的计算机进行 HTTP POST。
    2. 您将如何制作网络服务? 在这种情况下,网络服务是接收带有您的 arduino 信息的 POSTS 的东西,然后您的 WebApp 可以通过 HTTP 请求请求信息,(@ 987654321@ 是一些关于如何使用 Matlab 从 WebService 读取数据的文档)。也许可以在 matlab 上编写一些代码,让您的应用直接接收 HTTP POST 并处理它们,如下所示:

    传感器->Arduino-[将 arduino 连接到互联网的东西]->[应用程序中的 Web 服务->WebApp]

    但我还没有找到任何关于如何做到这一点的信息...替代方法是使用现有服务,如 Arduino Cloud IoTaREST 我推荐的架构如下所示:

    传感器->带有 esp8266 的 Arduino-> Arduino IoT API ->WebApp

    希望这会有所帮助,祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-17
      • 2014-09-09
      • 2019-12-15
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2010-11-11
      相关资源
      最近更新 更多