MatLab:阅读Arduino的串行监视器

时间:2017-07-26 12:08:47

标签: matlab arduino serial-port text-files

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

也许只是一个简单的 serial.println('1')来显示串口监视器中的字符'1'。那么,我们如何编程MATLAB来读取/检测'1'并做一些事情,比如......创建一个简单的文本文件?

有人可以教我吗?

感谢。

1 个答案:

答案 0 :(得分:0)

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

%% Port reset:
delete(instrfindall);

然后你必须打开与arduino的通信(检查你的arduino IDE以了解选择了哪个端口)。同时选择正确的BaudRate。

%% 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 %s\n',y)
end
fclose(fid);
fclose(arduino);

Matlab会将arduino值读作字符串,我让你把这个字符串转换成你需要的东西。

重要:

您需要为matlab安装arduino support package

<强>建议

我通常使用无限循环读取输出,如果需要跳过循环,则检查每一步。

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

我的matlab代码如下:

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