如何绘制从 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

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

  1. 你打算如何将 arduino 连接到互联网? 可能有两种可能的解决方案:使用 esp8266 将你的 arduino 直接连接到互联网并使 arduino 直接 make将 HTTP POST 连接到 Web 服务,或者将 arduino 连接到您的计算机,然后使用您的计算机制作 HTTP POST.
  2. 你打算如何制作网络服务? 在这种情况下,网络服务是用你的 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

希望对您有所帮助,祝您好运!