MultiCam as a Driver
Multiple Grabber Servicing
A grabber is a set of hardware resources able to handle the task of grabbing a frame from a camera. A board can incorporate one or several simultaneous grabbers.
A computer equipped with several frame grabbers can represent a fairly high number of grabbers. Up to eight boards can be used simultaneously in MultiCam. Only one MultiCam driver must be installed in this computer to give an application control over all the grabbers.
This application can freely select a specific grabber in a specific board and create a channel acquisition object using this grabber.
A channel is a set of hardware and software resources able to condition and transport the image from the camera into a PC memory surface. Once created, the channel is effectively perceived by the user as a uniform image acquisition chain controlled by its own set of MultiCam parameters.
The way the channel is operated is largely independent of the board effectively hosting the grabber, greatly simplifying the learning curve in case of new boards or new cameras.
Multiple Application Servicing
Several applications can be launched, each of them having the ability to interact with the common MultiCam driver installed in the host computer.
Any application can create as many channels as needed, implying the following resources:
- Any MultiCam compliant board within the system
- Any grabber within the selected board
- Any camera connected to the selected grabber
- Any memory surface in the computer memory
In addition, memory surfaces can be shared by several channel, and cameras can feed several channels.
Connecting and Disconnecting the Driver
Before using any MultiCam function, the communication between the application process and the MultiCam driver should be established. This is done with a C language API function McOpenDriver.
Before terminating the application, the user should terminate the communication of the application process with the MultiCam driver. This is done with a C language API function McCloseDriver.
Example
//Connecting to driver
MCSTATUS Status = McOpenDriver(NULL);
//...
//Application code
//...
//Disconnecting from driver
Status = McCloseDriver();
The Status variable can be used for error checking.