4

以下指南展示了如何使用 matlab 打开和读取串口:

串行 fOpen

它是这样完成的:

s = serial('COM1');
fopen(s)
fprintf(s,'*IDN?')
idn = fscanf(s);
fclose(s)

我有一个程序可以不断获取串行输出并绘制它:

figure
s = serial('COM11');
fopen(s)

while(true)

    if (strcmp(comsStatus, 'open') == 1)

        tline(i) = str2num(fgetl(s));
        i = i+1
        plot(tline(1:i-1))
        drawnow
    end
end

fclose(s)

我想做的是自动跳出while循环。但是似乎没有一个简单的迹象表明该系列何时停止播放。fgetl(s) 部分将等到某些事情真正通过。有没有办法让这个超时?有一个更好的方法吗?

4

1 回答 1

1

您可以按如下方式修改 while 循环:

figure
s = serial('COM11');
fopen(s)

while(s.BytesAvailable > 0)
        if (strcmp(comsStatus, 'open') == 1)

            tline(i) = str2num(fgetl(s));
            i = i+1
            plot(tline(1:i-1))
            drawnow
        end
    end

fclose(s)

参考: http ://home.iitb.ac.in/~rahul./ITSP/serial_comm_matlab.pdf

也来自个人经验。

于 2013-02-17T06:49:17.777 回答