0

Matlab で動作するビデオ カメラのライブ ビューを取得しようとしています。ビデオ カメラ SDK は C で記述されているため、.dll を使用して Matlab からカメラに通信しています (私は独学のプログラマーなので、用語が間違っていたら申し訳ありません)。ただし、ライブ ビューの場合、Matlab がカメラ バッファーからデータを読み取っている間、カメラはデータが Matlab によって読み取られていることを認識せず、やみくもにバッファーを更新し続けるのではないかと心配しています。そのため、ハンドシェイク機構が必要だと考えていますが、ここで問題が発生します。

以下は、現在のソリューションの概要を示す疑似コードです。私の質問は、2 つの 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"

ありがとうございました、

RS

4

1 に答える 1

1

Matlab は、コマンドでコンパイルされた C コードを簡単に呼び出すことができますmex。最も簡単なことは、c でカメラ バッファーから読み取るコードを記述し、それを matlab から呼び出すことです。

これらの拡張機能の例をいくつかここで見ることができます。

于 2012-07-30T16:15:17.590 に答える