/// <summary> /// Detects all usable cameras which are connected to the system /// </summary> /// <returns>A list containing all cameras which can be connected to</returns> public static List <Camera> Detect() { if (Utilities.Is64Bit && Environment.OSVersion.Platform != PlatformID.Unix) { Console.WriteLine("A 64bit windows system has been detected. This is not supported"); Console.WriteLine("due to the complexity of interoperating with libgphoto2"); Console.WriteLine("as it exposes variable length 'long' types in it's API."); Console.WriteLine("The API is unlikely to change before version 3 of the library"); Console.WriteLine("The current status of this can be found on the libgphoto2"); Console.WriteLine("mailing list. A detailed explanation can be found in the"); Console.WriteLine("README file for libgphoto2-sharp"); return(new List <Camera>()); } List <Camera> cameras = new List <Camera>(); Context c = new Context(); using (CameraAbilitiesList abilities = new CameraAbilitiesList()) using (PortInfoList portInfoList = new PortInfoList()) using (CameraList cameraList = new CameraList()) { // Get the list of all devices that are currently supported abilities.Load(c); // Get the list of all the (usb?) ports that are currently available portInfoList.Load(); // Create the list of all the connected devices which can be used abilities.Detect(portInfoList, cameraList, c); // Scan through all the detected cameras and remove any duplicates using (CameraList cams = RemoveDuplicates(cameraList)) { int count = cams.Count(); for (int i = 0; i < count; i++) { CameraAbilities ability = abilities.GetAbilities(abilities.LookupModel(cams.GetName(i))); PortInfo portInfo = portInfoList.GetInfo(portInfoList.LookupPath(cams.GetValue(i))); cameras.Add(new Gphoto2.Camera(ability, portInfo, c)); } } } return(cameras); }
public void SelectCamera(int index) { selected_camera__camera_list_index = index; selected_camera__abilities_list_index = abilities_list.LookupModel(camera_list.GetName(selected_camera__camera_list_index)); camera_abilities = abilities_list.GetAbilities(selected_camera__abilities_list_index); camera = new Camera(); camera.SetAbilities(camera_abilities); string path = camera_list.GetValue(selected_camera__camera_list_index); System.Console.WriteLine("Testing gphoto path = {0}", path); selected_camera__port_info_list_index = port_info_list.LookupPath(path); port_info = port_info_list.GetInfo(selected_camera__port_info_list_index); System.Console.WriteLine("PortInfo {0}, {1}", port_info.Name, port_info.Path); camera.SetPortInfo(port_info); }
public static int Main() { Console.WriteLine("Testing libgphoto2-sharp..."); try { Context ctx = new Context(); CameraAbilitiesList al = new CameraAbilitiesList(); al.Load(ctx); int count = al.Count(); if (count < 0) { Console.WriteLine("CameraAbilitiesList.Count() error: " + count); return(1); } else if (count == 0) { Console.WriteLine("no camera drivers (camlibs) found in camlib dir"); return(1); } for (int i = 0; i < count; i++) { CameraAbilities abilities = al.GetAbilities(i); string camlib_basename = basename(abilities.library); Console.WriteLine("{0,3} {3,-20} {1,-20} {2}", i, abilities.id, abilities.model, camlib_basename); } } catch (Exception e) { Console.WriteLine("Unhandled Exception: {0}", e.ToString()); return(1); } return(0); }