我正在尝试从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"
谢谢,
R,S
答案 0 :(得分:1)
Matlab可以轻松调用使用mex
命令编译的c代码。似乎最简单的事情是编写代码以从c中的相机缓冲区读取,然后从matlab调用它。
您可以看到这些扩展程序的一些示例here。