static void TestLib() { GPhoto2.GPContext scanContext = new GPhoto2.GPContext(); GPhoto2.GPPortInfoList portList = new GPhoto2.GPPortInfoList(); GPhoto2.CameraAbilitiesList abilitiesList = new GPhoto2.CameraAbilitiesList(); // Query portList.Load(); abilitiesList.Load(scanContext); GPhoto2.CameraList camList = abilitiesList.Detect(portList); // See how many popped out for (int i = 0; i < camList.Count; i++) { string cameraName = camList.GetName(i); string usbPort = camList.GetValue(i); GPhoto2.CameraAbilities abilities = abilitiesList.GetAbilities(i); // We only want cameras that can take photos if (abilities.device_type == GPhoto2.GphotoDeviceType.GP_DEVICE_STILL_CAMERA) { GPhoto2.Camera camera = new GPhoto2.Camera(); // Set the port informatoin int portNum = portList.LookupPath(usbPort); GPhoto2.GPPortInfo portInfo = portList.GetInfo(portNum); camera.PortInfo = portInfo; Console.Write($"{cameraName} at port {usbPort} - "); } } }
static void TestLibCapture() { GPhoto2.GPContext scanContext = new GPhoto2.GPContext(); GPhoto2.GPPortInfoList portList = new GPhoto2.GPPortInfoList(); GPhoto2.CameraAbilitiesList abilitiesList = new GPhoto2.CameraAbilitiesList(); // Query portList.Load(); abilitiesList.Load(scanContext); GPhoto2.CameraList camList = abilitiesList.Detect(portList); // See how many popped out for (int i = 0; i < camList.Count; i++) { string cameraName = camList.GetName(i); string usbPort = camList.GetValue(i); GPhoto2.CameraAbilities abilities = abilitiesList.GetAbilities(i); // We only want cameras that can take photos if (abilities.device_type == GPhoto2.GphotoDeviceType.GP_DEVICE_STILL_CAMERA) { GPhoto2.Camera camera = new GPhoto2.Camera(); // Set the port informatoin int portNum = portList.LookupPath(usbPort); GPhoto2.GPPortInfo portInfo = portList.GetInfo(portNum); camera.PortInfo = portInfo; bool notCaptured = true; while (notCaptured) { try { camera.Capture(); camera.Exit(); notCaptured = false; } catch (Exception ex) { Thread.Sleep(100); } } } } }