天下寒士 2023-01-16 16:31 采纳率: 83.3%
浏览 57
已结题

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朋友们多多赐教。感激不尽!
  • 写回答

5条回答 默认 最新

  • m0_54204465 2023-01-16 16:40
    关注

    在你的代码中,你将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");
    
    
    评论

报告相同问题?

问题事件

  • 系统已结题 1月24日
  • 赞助了问题酬金15元 1月16日
  • 创建了问题 1月16日

悬赏问题

  • ¥20 c语言写的8051单片机存储器mt29的模块程序
  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
  • ¥50 rk3588板端推理
  • ¥250 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥250 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大