Using Seco Camera Driver
The Seco camera driver has a custom interface to get pictures and control camera features.
It consists of a camera-specific and a common part.
Registry Settings
Camera-timings are configured through the registry.
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Camera]
"Dll"="camera.dll" ; common camera.dll
"Prefix"="CXM" ; together with Index,
"Index"=dword:1 ; specifies to create driver at CXM1:
"Order"=dword:2
"FriendlyName"="Camera Driver"
!-- For the older camera driver (pre 02.07.2009) the registry settings
!-- for a camera are here:
"Control0"=dword:900003f9 ; see PXA-Developers-Manual for details
"Control1"=dword:013f8112 ; on Control0 to Control4.
"Control2"=dword:fa000000
"Control3"=dword:0e0001df
"Control4"=dword:00b80001
"Timeout"=dword:007BFA48 ; 5s
"CameraDLL"="ov7660.dll" ; custom camera-specific DLL.
!-- For new camera drivers, each camera has its own sub-key.
!-- Which camera will be used is determined by the "Name"-key:
"Name"="ov7660" ; Name of the camera.
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Camera\OV7660]
"Control1"=dword:013f8112 ; on Control0 to Control4.
"Control2"=dword:fa000000
"Control3"=dword:0e0001df
"Control4"=dword:00b80001
"Timeout"=dword:007BFA48 ; 5s
"CameraDLL"="ov7660.dll" ; custom camera-specific DLL.
The Custom/Camera-Specific Part
The custom camera DLL needs to export following functions:
int InitCamera( void)
BOOL IoctlCamera( DWORD dwCode, PVOID pBufIn, DWORD dwLenIn, PDWORD pdwBufOut, DWORD dwLenOut, PDWORD pdwActualOut)
int DeInitCamera( void)
InitCamera
This function gets called on the CreateFile(…)
-call of the application.
DeInitCamera
This function gets called on the CloseHandle(…)
-call of the application.
IoctlCamera
This function gets called on every DeviceIoControl(…)
-call to the camera-driver.
If this function returns TRUE, it indicates that this ioctl-call is handled by the custom-driver.
If it returns FALSE it indicates, that the common-camera-driver should do additional action. i.e. when using IOCTL_SET_CAMERA_FEATURE
with CAM_RESOLUTION
you would typically set some registers in the camera and return FALSE, so the common driver adjust the resolution of the quick-capture-interface of the processor.
Application
The application should open the camera-driver with a call to:
hCamera = CreateFile( TEXT("CXM1:"), GENERIC_READ|GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
and close it with:
CloseHandle( hCamera);
To get a picture call:
Where g_pFrame
is a pointer to a memory-region which should receive the captured data and FRAME_SIZE
is the size of the memory-region reserved at g_pFrame
.
Download
PXACamera sample with new Camera Driver. Direct preview within camera driver made for Trizeps IV IPAN7 with PAL color conversion. 50fps:
PXACamera sample application for Windows Embbedded CE6 (Trizeps IV & Trizeps V):
Sample of custom camera drivers: (Trizeps IV & Trizeps V)
Windows Embedded CE6-Image for Trizeps5 running on uConXS (Spark) and using Omnivision OV9655 camera: