Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

Sony ICX-285 *.icd camera driver

Hello, I used camera advisor and camera file generator and neither has a camera file on Sony ICX 285. Before I contact Sony to retrieve camera interface commands and correct tap configuration, I decide to ask this question here to see if anyone has one or anyone knows how to modify existing camera file to work with Sony ICX-285 better but my ICX-285 also has a custom-built in intensifier.

 

Thanks.

0 Kudos
Message 1 of 7
(4,721 Views)
Did you try contacting the manufacturer?
0 Kudos
Message 2 of 7
(4,672 Views)
Yeah, I contacted Sony and found out that they don't have the information because ICX-285 was sold to 3rd party companies and they develop their own cameras with ICX-285 unit inside.. So it led me to Photonic Sciences Company in UK for the Photonic Science ICCD with serial number I found and that specialist was on the travel until this week to contact me. I hope that will solve the problem.
0 Kudos
Message 3 of 7
(4,652 Views)
Seems like you are having a pretty hardtime. lemme also dig and post if i find something on this.:smileyhappy:
0 Kudos
Message 4 of 7
(4,615 Views)

I finally got hold of the specialist and received camera control information but in C+ language with its own set of window library/dll. I knew very little about C+ so I'm trying to figure how to convert that information into NI camera file driver..  That *.h file seems is easy to read however. Just need to figure out proper syntax convert from window-based driver to NI MAX based file driver. That specialist forgot to inform me what tap configuration that camera has but should find out today as he should be in office. I think I'll just need to open some files within library to mine for specific serial commands (hopefully)..

 

Funny, I worked with analog cameras and IEEE1394 camera and they all were a breeze. Just install and ready to go. Camera link camera is entirely different world..

 

I have *.h file copy and pasted here in next post if has room (10k character limit) so you can get an idea.. Nice thing about this *.h file is that I now know what functions I can use with that specific camera. Just need to write proper code for NI camera file driver with those known functions. This *.h file also has some library calls so I have to look into those called files for more information.

 

0 Kudos
Message 5 of 7
(4,611 Views)

// *************** fdiminigrablinkcontrol.h *******************


#ifndef _PSL_VHR_H_
#define _PSL_VHR_H_

#define i32 signed long
#define ui32 unsigned long

#define MICROSECONDS 0
#define MILLISECONDS 1
#define SECONDS 2

/* FUNCTION PROTOTYPES
 * -------------------------------------------
 */

#ifdef MAKE_A_DLL
#define LINKDLL __declspec(dllexport)
#else
#define LINKDLL __declspec(dllimport)
#endif

 

#ifdef __cplusplus
extern "C" {
#endif

 

 

#include "multicam.h" // ansi c headers for Euresys Grablink interface

 


LINKDLL  int  PSL_VHR_Init(void);
// initialise camera and framegrabber
// returns 0 = success
//   1 = error configuring GrabLink module - check board/config file
//   2 = error opening serial port on PC-CamLink board


LINKDLL  char *PSL_VHR_get_camera_identifier();
// looks in the camera files directory for 'identifier.txt', reads and returns
// a pointer to an identifier string, or NULL if file was not found

LINKDLL  bool PSL_VHR_ReadMaxImageWidth(int  *pMaxWidth);
// reads maximum possible unbinned width of which camera is capable
LINKDLL  bool PSL_VHR_ReadMaxImageHeight(int  *pMaxHeight);
// reads maximum possible unbinned height of which camera is capable

 

 

//////////////////////////// camera control functions /////////////////////////////////////
LINKDLL  bool  PSL_VHR_SetTriggerMode(int iTriggerMode);
// various operational modes including: 0 = freerunning
//          1 = software triggered
//          2 = hardware falling edge
//          6 = hardware rising edge
//          18= pipeline falling
//          22= pipeline rising
//          17= pipeline software

LINKDLL  int PSL_VHR_GetTriggerMode(); // get current trigger mode

LINKDLL  bool PSL_VHR_Set_subarea_and_binning(int left,int top,int right,int bottom,int xbin,int ybin);

// note that xbin can be set in the range 1 to 63, ybin in the range 1 to 1040
// Having reset subarea/binning the user should always call PSL_VHR_Return_width() and
// PSL_VHR_Return_height() in order to know the exact dimensions of the acquired image
// (and so be able to display it correctly)

LINKDLL  bool PSL_VHR_WriteVideoGain(int iVgain);
// sets video gain in range 1 to 100

LINKDLL  bool PSL_VHR_WriteIntensifierGain(int iIgain);
// sets intensifier gain in range 1 to 100 (if the camera is fitted with an intensifier)

LINKDLL  bool PSL_VHR_WriteExposure(int iExpUnits,int iExpTime);
// sets integration time. iExpUnits specifies the units:
//    0=microseconds
//    1=milliseconds
//    2=seconds
// iExpTime can be set in the range 1 to 16383 of the selected unit

LINKDLL  bool  PSL_VHR_WriteSpeed(int iSpeed);
// iSpeed = 12500 for 12.5MHZ or 25000 for 25 MHZ

 

 


//////////////////////////// acquisition functions /////////////////////////////////////
LINKDLL  bool PSL_VHR_Snap_and_return(void);
// starts a single 12 bit acquisition (use PSL_VHR_Get_snap_status() to check when finished)
LINKDLL  bool PSL_VHR_abort_snap(void);
// aborts current acquisition, returns false if failed
LINKDLL  bool PSL_VHR_Get_snap_status(void);
// returns true when snap is finished (or timed out), false if not. Note: once this
// function has returned true (=snap completed) it should not be called again until
// after another snap has been initiated using PSL_VHR_Snap_and_return()


LINKDLL  bool PSL_VHR_Fusion_snap(unsigned short noise_reduction_factor);
// performs a single 16 bit fusion acquisition, with a noise reduction factor in
// range 1 to 16. 16 gives best noise reduction, but takes longer.
LINKDLL  unsigned short * PSL_VHR_Get_image_pointer(void);
// returns a pointer to the start of the image data. This function should be called thus:
// PSL_VHR_Snap_and_return() -> PSL_VHR_Get_snap_status()=true -> PSL_VHR_Get_image_pointer()
// PSL_VHR_Fusion_snap()     -> PSL_VHR_Get_image_pointer()

LINKDLL  int  PSL_VHR_Return_width();
//reads current image width
LINKDLL  int  PSL_VHR_Return_height();
//reads current image height

0 Kudos
Message 6 of 7
(4,610 Views)

//////////////////////////// readout shading removal functions ////////////////////////////////
LINKDLL bool PSL_VHR_enable_offset_subtraction(bool bReadoutSubtractionEnabled);

//////////////////////////// bright corner subtraction functions //////////////////////////////
LINKDLL bool PSL_FDI_load_bright_field_file(char *brightfile);
LINKDLL bool PSL_VHR_enable_bright_corner_subtraction(bool bBrightCornerSubtractionEnabled);
// enables bright corner correction, providing a bright corner file has already been loaded

//////////////////////////// dark field functions /////////////////////////////////////////////
LINKDLL bool PSL_VHR_enable_dark_field_subtraction(bool bDarkSubtractionEnabled);
// enables correction of bright pixels

//////////////////////////// flat field functions /////////////////////////////////////////////
LINKDLL bool PSL_VHR_load_flat_field_file(char *flatfile);
// loads specified flat field file
LINKDLL bool PSL_VHR_enable_flat_field_subtraction(bool bFlatSubtractionEnabled);
// enables automatic flat field correction, providing a flat field file has already been loaded

//////////////////////////// remapping (distortion removal) functions /////////////////////////
LINKDLL bool PSL_VHR_open_map(char *mapfile);
 // open remapping file, return true if specified file was found
 // and was of correct type as identified by header
LINKDLL unsigned short *
PSL_VHR_remap_image(unsigned short *orig_image,int *image_width,int *image_height,bool bSmoothingEnabled,bool bClippingEnabled);
// this remaps the just acquired image data in orig_image and returns a pointer to the remapped image. The dimensions
// of the remapped image are returned in image_width and image_height

 

 

 

//////////////////////////// temperature control //////////////////////////////////////////////
LINKDLL  bool PSL_VHR_cooling_enable(bool cool_enable);
// switches cooling on (if the camera has cooling)


LINKDLL  bool    PSL_VHR_Is_Temp_Readable();
// does camera support reading of temperature?
LINKDLL  int  PSL_VHR_read_current_temp(void);
// returns the current operating temperature of camera  in degrees C
LINKDLL  float PSL_VHR_read_current_temp_as_float(void);
// returns the current operating temperature of camera as a float in degrees C

 

 

 

LINKDLL bool PSL_VHR_write_tiff16_file(unsigned short *orig_image,int image_width,int image_height,char *fname);
// writes an image buffer to file in 16 bit TIFF format

 

LINKDLL  void PSL_VHR_Free(void);
// release framegrabber and system resources

 

 

 

 

 

 

/////////// for internal use only- DO NOT USE /////////////////////////////////////////////////
LINKDLL bool PSL_VHR_load_camera_configuration_file(void);

//LINKDLL  bool PSL_VHR_set_temp_control_loop_frequency(int iFreq);
LINKDLL  int  PSL_VHR_get_temp_control_loop_frequency(void);
LINKDLL  int  PSL_VHR_read_temp_pulse_width(void);

LINKDLL bool PSL_VHR_write_setup_value(unsigned short SetupVal);
LINKDLL int  PSL_VHR_get_SHP();
LINKDLL int  PSL_VHR_get_SHD();
LINKDLL bool PSL_VHR_set_offset(int offset);
LINKDLL int  PSL_VHR_get_offset();

LINKDLL bool PSL_VHR_write_mini_fdi_setup_values(int dcba,int hgfe);
LINKDLL int PSL_VHR_get_mini_fdi_setup_value_dcba();
LINKDLL int PSL_VHR_get_mini_fdi_setup_value_hgfe();

//LINKDLL void PSL_VHR_set_dark_fielding_threshold_level(int iThreshold);
//LINKDLL void PSL_VHR_set_dark_fielding_saturated_level(int iSaturated);
//LINKDLL int PSL_VHR_get_dark_fielding_threshold_level();
//LINKDLL int PSL_VHR_get_dark_fielding_saturated_level();

LINKDLL  bool ReadWidth(long  *pCurrentWidth);
LINKDLL  bool ReadHeight(long  *pCurrentHeight); 
 
LINKDLL  unsigned short Get_default_fusion_offset(void);
LINKDLL  void Save_default_fusion_offset(unsigned short fusion_offset);
LINKDLL  void MultiCallBackFunction (MCCALLBACKINFO& CbInfo);

LINKDLL  bool WriteCommand(char Name,int Val);
LINKDLL  bool WriteCommandWithoutCheck(char Name,int Val);
LINKDLL  bool ReadCommand(char Name,int *Val);

LINKDLL  bool PSL_VHR_initialise_sequence_storage(unsigned short no_images);
LINKDLL  bool PSL_VHR_snap_sequence(unsigned short no_images_to_snap);
LINKDLL  bool PSL_VHR_get_sequence_image_pointer(unsigned short * *pSequenceImage,unsigned short image_required);
LINKDLL  bool PSL_VHR_free_sequence_storage(void);


/////////// for internal use only /////////////////////////////////////////////////////////////

 

 


#ifdef __cplusplus
};
#endif

 

#endif /* _PSL_VHR_H_ */

0 Kudos
Message 7 of 7
(4,609 Views)