4
下面的指南介紹瞭如何打開和使用MATLAB讀取FOMR串行端口:關閉串口自動用Matlab
而且它這樣做:
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)部分將等待,直到實際發生。有沒有辦法解決這個問題?有一個更好的方法嗎?
難道你不能查詢's.BytesAvailable',只有在s.BytesAvailable'大於0時才調用'fgetl'? – 2013-02-14 09:33:11
@ H.Muster我還沒有嘗試過。你應該添加這個作爲答案,我會投票。 – 2013-02-14 22:47:56
我還沒有嘗試過這個,因此,迄今爲止,這只是一個想法,而不是一個可行的答案。因此只有評論呢。你需要一個代碼示例,或者你可以自己嘗試嗎? – 2013-02-15 07:19:12