2012-07-30 28 views
0

我想要從Matlab工作的視頻相機的實時視圖。視頻相機SDK是用C語言編寫的,所以我一直使用.dll來從Matlab到相機進行通信(我是一位自學成才的程序員,所以如果我的術語關閉,我很抱歉)。然而,對於實時視圖,我擔心,雖然Matlab正在從相機緩衝區讀取數據,但相機並不會意識到正在通過Matlab讀取數據,並繼續盲目地更新緩衝區。因此,我認爲握手機制是必需的,這是我遇到麻煩的地方。在MATLAB中接收來自C .dll文件的數據的握手

下面是概述我當前解決方案的僞代碼。我的問題是關於 兩個while()循環內的語句。我如何真正去檢查我正在使用的布爾值的狀態?我能想到的可能性需要將參數傳遞給多個函數並進行混淆。有更清潔的方法嗎?

//C-code 
initCamera(); 
dataReadyForSend = false; 
grabFrame(); 
dataReadyForSend = true; 
while(dataReceivedByMatlab == false) 
    { // Check status}; 
//repeat 

現在的Matlab的一面:

% Matlab-code 
dataReceieved = false; 
while(waitForReadySignal() == false) 
    { %Check status} 
readDataFromC(); 
dataRecieved == true; 
sendMessageOfSuccess(); %Tell C "I got the data" 

謝謝

R.S.

回答

1

Matlab可以很容易地調用用mex命令編譯的c代碼。看起來最簡單的事情是編寫代碼從c中的相機緩衝區讀取數據,然後從matlab中調用它。

你可以看到這些擴展here的一些例子。

相關問題