MatLab:阅读Arduino的串行监视器



如何在 MATLab 程序中显示 Arduino 串行监视器中显示的内容?从Arduino,我们可以使用serial.printlnserial.print通过串行监视器显示输出。但是如何在 MATlab 中显示来自 arduino 的serial.printlnserial.print?如果在Qt编程中,任何东西都可以在QDebug中显示,但我真的不知道MATLab的情况如何。

也许只是一个简单的serial.println('1'(在串行监视器中显示字符"1"。然后,我们如何对 MATLAB 进行编程以读取/检测"1"并对其进行处理,例如......创建一个简单的文本文件?

谁能教我?

谢谢。

首先,我们将关闭最终打开的端口:

%% Port reset:
delete(instrfindall);

然后,您必须打开与arduino的通信(检查arduino IDE以了解选择了哪个端口(。同时选择正确的波特率。

%% Serial open
arduino=serial('COM4','BaudRate',9600);

然后你可以开始读取arduino输出。假设我们要读取前 10 个输出。(所以 10 第一个 serial.printxx(

%% Start to read arduino's values and write the result in results.txt
fopen(arduino)
fid = fopen('results.txt','wt');
for i=1:10
y = fscanf(arduino,'%s');
fprintf(fid,'my arduino output is %sn',y)
end
fclose(fid);
fclose(arduino);

Matlab 会将 arduino 值读取为字符串,我让你将此字符串转换为您需要的任何内容。

重要:

您需要为 matlab 安装 arduino 支持包

建议

我通常使用无尽的while循环来读取输出,如果需要跳过循环,它会检查每一步。

例如,如果您的 arduino 代码发送Serial.println('exit')

我的 MATLAB 代码将如下所示:

while 1
y = fscanf(arduino,'%s');
if strcmp(y,'exit')
break
end 
fprintf('my arduino output is %sn',y)
end

最新更新