Accessing an actxserver COM object with a GUI

5 views (last 30 days)
Hello,
I am trying to create a GUI that controls a third party program, which controls a camera.
I create the COM object as an activeX server as follows:
cameraHandle = actxserver('maxim.ccdcamera');
Now this object is in the workspace and I can interact with this object and make it do whatever I wish, no problem.
For example, the command for the camera to take a picture is:
invoke(cameraHandle,'Expose',exposureTime);
Now I would like to make one of the buttons in my GUI, do the same thing.
The code for the button is:
function buttonExpose_Callback(hObject, eventdata, handles)
% hObject handle to buttonExpose
% handles structure with handles and user data
% some commands here
How can I make this function act on the object cameraHandle?
Thanks!

Accepted Answer

Geoff Hayes
Geoff Hayes on 9 Jan 2015
Dmitry - if you wish to use the same code in your GUI, then instantiate the cameraHandle in the _OpeningFcn of the GUI, save it to the handles structure, and then reference it in your pushbutton code. Try the following
function myGui_OpeningFcn(hObject, eventdata, handles, varargin)
% Choose default command line output for untitled3
handles.output = hObject;
% create the COM object
handles.cameraHandle = actxserver('maxim.ccdcamera');
% Update handles structure
guidata(hObject, handles);
And then in your push button callback, just do
function buttonExpose_Callback(hObject, eventdata, handles)
exposureTime = 42;
invoke(handles.cameraHandle,'Expose',exposureTime);
Note that any callback that receives the handles structure as an input parameter, can reference the cameraHandles via
handles.cameraHandle
  1 Comment
Dmitry
Dmitry on 9 Jan 2015
Geoff,
You're absolutely right. I was trying to figure out how to add the camera handle to the handles structure of the gui. This is the way to do that.
It works fine now. Thanks again!

Sign in to comment.

More Answers (1)

Abdur Rosyid
Abdur Rosyid on 3 Feb 2018
This is interesting. I also need to do the same task, but in AppDesigner. Furthermore, I need to call the object in different callbacks. How can I do this in AppDesigner? Thank you.
  1 Comment
Geoff Hayes
Geoff Hayes on 6 Feb 2018
Abdur - this is not an answer to the question so please delete and post as a comment or create a new question. Please provide sufficient details.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!