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