0

我正在尝试从 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

4

1 回答 1

1

mexMatlab可以很方便的调用用命令编译的c代码。似乎最简单的事情是编写代码以从 c 中的相机缓冲区读取,然后从 matlab 中调用它。

您可以在此处查看这些扩展的一些示例。

于 2012-07-30T16:15:17.590 回答