using System; using System.Drawing; using System.IO; using System.Threading; using System.Windows.Media.Imaging; using System.Collections.Generic; using xiApi.NET; namespace xiAPI.NET_Capture_images_to_file { class Program { static void Main(string[] args) { xiCam myCam = new xiCam(); try { // Get number of connected devices int numDevices = 0; myCam.GetNumberDevices(out numDevices); if (0 == numDevices) { Console.WriteLine("No devices found"); Thread.Sleep(3000); return; } else { Console.WriteLine("Found {0} connected devices.", numDevices); } // Initialize the device and return the device handle. myCam.OpenDevice(0); // Get device model name string strVal; myCam.GetParam(PRM.DEVICE_NAME, out strVal); Console.WriteLine("Found device: {0}", strVal); // Get device type myCam.GetParam(PRM.DEVICE_TYPE, out strVal); Console.WriteLine("Device type: {0}", strVal); // Get device SN myCam.GetParam(PRM.DEVICE_SN, out strVal); Console.WriteLine("Device SN: {0}", strVal); Console.WriteLine(""); // get ffs statistics int num_free = 0; int num_used = 0; num_free = myCam.GetParamInt(PRM.FREE_FFS_SIZE); num_used = myCam.GetParamInt(PRM.USED_FFS_SIZE); Console.WriteLine("FFS stats:"); Console.WriteLine("Free bytes : {0}", num_free); Console.WriteLine("Used bytes : {0}", num_used); Console.WriteLine(""); List ffs_files = new List(); // read available file names stored in camera FFS for (int file_id = 0; ; file_id++) { try { myCam.SetParam(PRM.FFS_FILE_ID, file_id); string file_name = myCam.GetParamString(PRM.FFS_FILE_NAME); ffs_files.Add(file_name); Console.WriteLine("Found file {0} in camera FFS", file_name); } catch { Console.WriteLine(""); break; } } // read all files from camera FFS string ffs_files_dir = "FFS_FILES"; Directory.CreateDirectory(ffs_files_dir); Directory.SetCurrentDirectory(Directory.GetCurrentDirectory() + "\\" + ffs_files_dir); foreach (string file_name in ffs_files) { int file_size = 0; myCam.SetParam(PRM.FFS_FILE_NAME, file_name); file_size = myCam.GetParamInt(PRM.FFS_FILE_SIZE); byte[] file_data = new byte[file_size]; Console.WriteLine("Reading file {0} of size {1}", file_name, file_size); myCam.GetParam(PRM.READ_FILE_FFS, out file_data, out file_size); Console.WriteLine("Saving file {0} to {1}.", file_name, Directory.GetCurrentDirectory()); File.WriteAllBytes(file_name, file_data); } myCam.CloseDevice(); } //------------------------------------------------------------------------------------ catch (xiExc exc) { Console.WriteLine(exc.Message); Thread.Sleep(3000); myCam.CloseDevice(); } catch (Exception exc) { Console.WriteLine(exc.Message); Thread.Sleep(3000); myCam.CloseDevice(); } //------------------------------------------------------------------------------------ } } }