我正在尝试从 Matlab 获得摄像机的实时视图。摄像机 SDK 是用 C 编写的,所以我一直在使用 .dll 从 Matlab 与摄像机进行通信(我是一名自学成才的程序员,所以如果我的术语不正确,我深表歉意)。然而,对于实时取景,我担心当 Matlab 从相机缓冲区读取数据时,相机不会意识到 Matlab 正在读取数据,并继续盲目更新缓冲区。因此,我认为需要握手机制,这就是我的麻烦所在。
下面是概述我当前解决方案的伪代码。我的问题是关于两个 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