我正在制作一个MATLAB GUI来控制一组提供ActiveX接口的摄像机(Thorlabs DCC1545M)。我想要实现的功能之一是能够点击相机显示窗口并获取当前点数据(相对于窗口)。
我可以使用通用图来轻松实现这一点,但是一旦加载了ActiveX控件,ActiveX控件就会消耗ActiveX区域上发生的鼠标事件,并且不会调用图形的事件函数。发生在该区域之外的鼠标事件会按预期响应。
有关如何禁用ActiveX优先于鼠标事件的任何建议?或其他解决方法?
干杯,
答案 0 :(得分:0)
这是一个可以正常工作的Matlab文件:
exl = actxserver('excel.application');
exlWkbk = exl.Workbooks;
exlFile = exlWkbk.Open(['C:\mypath\ExcelCOM.xls']);
exlSheet1 = exlFile.Sheets.Item('Sheet1');
robj = exlSheet1.Columns.End(4); % Find the end of the column
numrows = robj.row; % And determine what row it is
dat_range = ['D2:G' num2str(numrows)]; % Read to the last row
rngObj = exlSheet1.Range(dat_range);
exlData = rngObj.Value;
for ii = 1:size(exlData,2)
matData(:,ii) = reshape([exlData{2:end,ii}],size(exlData(2:end,ii)));
lBoxList{ii} = [exlData{1,ii}];
end
exl.visible = true;
for j=1:size(exlData,2)
for k=1:13
A(k+2,j)=0
A(k,j)=matData(k,j)
end
end
exlWkbk.Close
exl.Quit
答案 1 :(得分:0)
因此,我目前的解决方法是对当前相机框架执行getImage,关闭ActiveX组件的可见性,并将其替换为图像。
“windowbuttonmotionfcn”适用于MATLAB中的图像,而我真正失败的是来自相机的连续实时反馈。