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 に答える