2013-02-14 130 views
4

下面的指南介紹瞭如何打開和使用MATLAB讀取FOMR串行端口:關閉串口自動用Matlab

Serial 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)部分將等待,直到實際發生。有沒有辦法解決這個問題?有一個更好的方法嗎?

+1

難道你不能查詢's.BytesAvailable',只有在s.BytesAvailable'大於0時才調用'fgetl'? – 2013-02-14 09:33:11

+0

@ H.Muster我還沒有嘗試過。你應該添加這個作爲答案,我會投票。 – 2013-02-14 22:47:56

+0

我還沒有嘗試過這個,因此,迄今爲止,這只是一個想法,而不是一個可行的答案。因此只有評論呢。你需要一個代碼示例,或者你可以自己嘗試嗎? – 2013-02-15 07:19:12

回答