matlab把fwrite放到if后面无法输出结果

初学matlab软件,用了一个if函数,想经过判断后串口输出结果dataA,然后过1秒输出结果dataB,但是用串口检测软件,不会得到输出值。
图像窗口的label已经是black了,但是串口不会输出结果。

img

以下是得不到结果的代码(我修改的部分)

if label=='balck'
    c=2;
    fwrite(s,dataA,"uint8");
    pause(1)
    fwrite(s,dataB,"uint8");
end

以下是全部代码(网上随便找了一个分享的例子,我想自己改动一下,来学习)
clear
delete(instrfindall);
s = serial('COM1','BaudRate',9600);
fopen(s);
dataA=('A0 01 01 A2');
dataB=('A0 01 00 A1');

camera = webcam;
load('Alex_Public_32');
c=0;
while true

picture = camera.snapshot;
picture = imresize(picture,[227,227]);

label = classify(net,picture);

if label=='yellow'
    c=1;
end

if label=='balck'
    c=2;
    fwrite(s,dataA,"uint8");
    pause(1)
    fwrite(s,dataB,"uint8");
end

if label=='white'
    c=3;
end

image(picture);
title(char(label));
drawnow;
end
fclose(s);
delete(s);

我尝试过不经过if判断,直接进行fwrite输出串口结果,串口软件是能得到结果的。所以我觉得应该是加到if后面,就没办法输出了。
把fwrite提出来,不放到if后面,就能得到结果:(结果在图片上)
clear
delete(instrfindall);
s = serial('COM1','BaudRate',9600);
fopen(s);
dataA=('A0 01 01 A2');
dataB=('A0 01 00 A1');
fwrite(s,dataA,"uint8");
pause(1)
fwrite(s,dataB,"uint8");

img

刚开始学matlab,没有什么编程基础,实在不知道为什么会导致加到if后面,串口就输出不到结果。
期望CSDN朋友们多多赐教。感激不尽!

在你的代码中,你将fwrite语句放在了if语句后面。当if条件为真时,fwrite语句才会执行。如果if条件为假,fwrite语句将不会执行。因此,如果if语句的条件不满足,串口将不会输出任何数据。

那为什么把fwrite语句放在if语句外面就能得到结果呢?因为fwrite语句不在if语句中,所以它总是会被执行,无论if条件是否成立。

如果你希望在满足特定条件时输出数据,则可以将fwrite语句放在if语句中。例如:

if label=='balck'
    c=2;
    fwrite(s,dataA,"uint8");
    pause(1)
    fwrite(s,dataB,"uint8");

不经过if正常的话就是if判断获取的label不满足条件,不满足就返回FALSE,当然就不会继续执行!可以先输出获取的label值是什么,看看能否获取到,获取到时什么值,再去if判断

在你程fwire执行完要加个fclose,释放一下资源

如果你在使用Matlab时遇到了串口输出问题,可能有以下几种原因:

串口配置不正确:请检查串口的波特率、数据位、停止位等配置是否正确,确保串口配置和检测软件的配置一致。

串口未打开:请确保在程序中已经打开了串口,可以使用 fopen() 函数打开串口。

串口输出格式不正确:串口输出的数据需要使用特定格式,例如字符串或者二进制数组。确保你的程序中输出的数据是正确的格式。

没有输出数据:确保在程序中有输出数据的语句,并且在if语句中的条件成立时,程序能够正确执行输出数据的语句。

串口输出间隔问题:确保在if语句中输出dataA和dataB之间有足够的时间间隔,例如使用pause(1)来等待1秒。

这些都是可能导致串口输出问题的原因,建议按照上述顺序检查程序,以确定问题的具体原因。