2017-06-06 172 views
1

我正在研究一個應用程序,通過USB從4個傳感器接收大量數據並在Matlab中顯示它們。在處理時進行流式處理

流式傳輸完美,但是,我需要對數據進行流處理。我使用傳入數據的一部分並處理它們,然後繪製處理後的數據。傳入的數據是分段處理的。

我的問題是,如果我在每段中處理5秒鐘的數據。當處理和繪圖被執行時,流式傳輸停止,因此當下一批處理的時候,我必須等待下一個5秒段的流式傳輸。即使我在20秒後延遲處理的開始時間,流處理將始終停止,處理開始時我會一直停留一小段時間來讀取新數據。即使在我處理數據時,如何保持串口或數據接收不受串口乾擾?

感謝

回答

1

你應該用一個工作者線程來執行你的處理。這可以在MATLAB使用parfeval命令來完成,如下所示:

parpool % start a parallel pool (may take some time) 

... 

nOutputs = 1; % number of outputs 
in1 = 1; % first input argument 
in2 = 2; % second input argument 
f = parfeval(@your_function, nOutputs, in1, in2); % execute your function with two input arguments as example 

... 

% check regularly if the function is executed 
if strcmp(f.State, 'finished') == 1 
    output = fetchOutputs(f); 
    ... % do something with the output 
    delete(f); % empty resources 
end 

作爲替代方案,可以使用batch命令。