如何在 MATLab 程序中显示 Arduino 串行监视器中显示的内容?从Arduino,我们可以使用serial.println和serial.print通过串行监视器显示输出。但是如何在 MATlab 中显示来自 arduino 的serial.println和serial.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