Ejemplo n.º 1
0
	void focus() {
		std::cout << "Focusing\n";
		//first, focus to farthest possible
		set_config_value_string(camera, "output", "PC", context);
		for (int i=0; i < MAX_FOCUS_STEPS; i++)
		  set_config_value_string(camera, "manualfocusdrive", "Far 3", context);

		int last_quality = -1;
		int quality = -1;
		char c='A';
		while(1) {
			capture_to_file(FOCUS_FILE+c, FOCUS_EXPTIME, FOCUS_ISO);
			quality = focus_quality(FOCUS_FILE +c+ "G.fits");
			std::cout << quality << std::endl;
			if (quality < 0.95*last_quality) break;
			set_config_value_string(camera, "manualfocusdrive", "Near 2", context);
			last_quality = quality;
			c++;
		}
		//we actually moved past focus by one step, so go back
		set_config_value_string(camera, "manualfocusdrive", "Far 1", context);
		capture_to_file("final_focus", FOCUS_EXPTIME, FOCUS_ISO);
		std::cout << focus_quality("final_focusG.fits") << std::endl;
		set_config_value_string(camera, "output", "TFT", context);
		
		std::cout << "Focused!\n";
		return;
	}
Ejemplo n.º 2
0
  void test_focus(bool near) {
		set_config_value_string(camera, "output", "PC", context);
		int quality = -1;
			if (near) set_config_value_string(camera, "manualfocusdrive", "Near 1", context);
				else set_config_value_string(camera, "manualfocusdrive", "Far 1", context);

		capture_to_file(FOCUS_FILE, FOCUS_EXPTIME, FOCUS_ISO);
		quality = focus_quality(FOCUS_FILE + "G.fits");
		std::cout << quality << std::endl;
		set_config_value_string(camera, "output", "TFT", context);
		return;
  }
Ejemplo n.º 3
0
	int capture_to_file(std::string file_prefix, float exposure,
			std::string iso="1600", std::string aperture="0",
			bool gen_fits=true) {
		int aborted = 0;
		int fd, retval;
		CameraFile *canonfile;
		CameraFilePath camera_file_path;
		set_config_value_string(camera, "iso", iso.c_str(), context);
		if (aperture=="0")
			set_config_value_index(camera, "aperture", 0, context);
		else
			set_config_value_string(camera, "aperture", aperture.c_str(), context);

		printf("Capturing.\n");
		//press shutter, wait for "exposure" seconds, release shutter
		CameraEventType eventtype;
		void* eventdata;
		set_config_value_string(camera, "eosremoterelease", "Press Full", context);
		usleep(exposure*1e6);
		if (errno == EINTR) aborted = 1;
		set_config_value_string(camera, "eosremoterelease", "Release Full", context);

		std::cout << "Waiting for file...\n";
		eventtype = GP_EVENT_UNKNOWN;
		while (eventtype != GP_EVENT_FILE_ADDED) {
			gp_camera_wait_for_event(camera, TIMEOUT, &eventtype, &eventdata, context);
		}
		camera_file_path = *((CameraFilePath*) eventdata);

		printf("Pathname on the camera: %s/%s\n", camera_file_path.folder,
				camera_file_path.name);

		fd = open((file_prefix+".cr2").c_str(),
				O_CREAT | O_WRONLY, 0644);
		retval = gp_file_new_from_fd(&canonfile, fd);
		if (retval != GP_OK) return retval;

		retval = gp_camera_file_get(camera, camera_file_path.folder,
				camera_file_path.name, GP_FILE_TYPE_NORMAL, canonfile,
				context);
		if (retval != GP_OK) return retval;

		retval = gp_camera_file_delete(camera, camera_file_path.folder,
				camera_file_path.name, context);
		if (retval != GP_OK) return retval;

		gp_file_free(canonfile);
		if (gen_fits) produce_fits(file_prefix, aborted);
		return GP_OK;
	}
Ejemplo n.º 4
0
int main(int argc, char **argv) {
	Camera		*camera;
	int		ret;
	char		*owner;
	GPContext	*context;

	context = sample_create_context (); /* see context.c */

	gp_log_add_func(GP_LOG_ERROR, errordumper, NULL);

	gp_camera_new (&camera);

	/* This call will autodetect cameras, take the
	 * first one from the list and use it. It will ignore
	 * any others... See the *multi* examples on how to
	 * detect and use more than the first one.
	 */
	ret = gp_camera_init (camera, context);
	if (ret < GP_OK) {
		printf("No camera auto detected.\n");
		gp_camera_free (camera);
		return 0;
	}

	ret = get_config_value_string (camera, "ownername", &owner, context);
	if (ret < GP_OK) {
		printf ("Could not query owner.\n");
		goto out;
	}
	printf("Current owner: %s\n", owner);
	if (argc > 1) {
		ret = set_config_value_string (camera, "ownername", argv[1], context);
		if (ret < GP_OK) {
			fprintf (stderr, "Failed to set camera owner to %s; %d\n", argv[1], ret);
		} else 
			printf("New owner: %s\n", argv[1]);
	}
out:
	gp_camera_exit (camera, context);
	gp_camera_free (camera);
	return 0;
}
Ejemplo n.º 5
0
static void isochange(Camera *canon, GPContext *canoncontext, int isoval) {
    switch (isoval) {
    case '1': {
        int retval;
        retval = set_config_value_string(canon, "iso", "a", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '2': {
        int retval;
        retval = set_config_value_string(canon, "iso", "100", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '3': {
        int retval;
        retval = set_config_value_string(canon, "iso", "125", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '4': {
        int retval;
        retval = set_config_value_string(canon, "iso", "160", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '5': {
        int retval;
        retval = set_config_value_string(canon, "iso", "200", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '6': {
        int retval;
        retval = set_config_value_string(canon, "iso", "250", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '7': {
        int retval;
        retval = set_config_value_string(canon, "iso", "320", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '8': {
        int retval;
        retval = set_config_value_string(canon, "iso", "400", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '9': {
        int retval;
        retval = set_config_value_string(canon, "iso", "500", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'q': {
        int retval;
        retval = set_config_value_string(canon, "iso", "640", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'w': {
        int retval;
        retval = set_config_value_string(canon, "iso", "800", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'e': {
        int retval;
        retval = set_config_value_string(canon, "iso", "1000", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'r': {
        int retval;
        retval = set_config_value_string(canon, "iso", "1250", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 't': {
        int retval;
        retval = set_config_value_string(canon, "iso", "1600", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'y': {
        int retval;
        retval = set_config_value_string(canon, "iso", "2000", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'u': {
        int retval;
        retval = set_config_value_string(canon, "iso", "2500", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'i': {
        int retval;
        retval = set_config_value_string(canon, "iso", "3200", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'o': {
        int retval;
        retval = set_config_value_string(canon, "iso", "4000", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'p': {
        int retval;
        retval = set_config_value_string(canon, "iso", "5000", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '0': {
        int retval;
        retval = set_config_value_string(canon, "iso", "6400", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }

    }
}
Ejemplo n.º 6
0
static void aperturechange(Camera *canon, GPContext *canoncontext, int ap) {
    switch (ap) {
    case '1': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "2.8",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '2': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "3.2",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '3': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "3.5",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '4': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "4", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '5': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "4.5",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '6': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "5", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '7': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "5.6",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '8': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "6.3",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '9': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "7.1",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'q': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "8", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'w': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "9", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'e': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "10", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'r': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "11", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 't': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "13", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'y': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "14", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'u': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "16", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'i': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "18", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'o': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "20", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'p': {
        int retval;
        retval = set_config_value_string(canon, "aperture", "22", canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }

    }
}
Ejemplo n.º 7
0
static void shutterchange(Camera *canon, GPContext *canoncontext, int ss) {
    switch (ss) {
    case '1': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "1/250",
                                         canoncontext);
        //retval=gp_camera_set_config(canon,  , canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '2': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "1/200",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '3': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "1/160",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '4': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "1/125",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '5': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "1/100",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '6': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "1/80",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '7': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "1/60",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '8': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "1/40",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '9': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "1/20",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'q': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "1/5",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'w': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "0.5",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'e': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "1",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'r': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "2",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 't': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "4",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'y': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "6",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'u': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "8",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'i': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "10",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'o': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "15",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case 'p': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "20",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    case '0': {
        int retval;
        printf("Shutter Speed.\n");
        retval = set_config_value_string(canon, "shutterspeed", "30",
                                         canoncontext);
        printf("  Retval: %d\n", retval);
        break;
    }
    }
}
Ejemplo n.º 8
0
int
main(int argc, char **argv) {
	Camera	*canon;
	int	i, retval;
	GPContext *canoncontext = sample_create_context();

	gp_log_add_func(GP_LOG_ERROR, errordumper, 0);
	gp_camera_new(&canon);

	/* When I set GP_LOG_DEBUG instead of GP_LOG_ERROR above, I noticed that the
	 * init function seems to traverse the entire filesystem on the camera.  This
	 * is partly why it takes so long.
	 * (Marcus: the ptp2 driver does this by default currently.)
	 */
	printf("Camera init.  Takes about 10 seconds.\n");
	retval = gp_camera_init(canon, canoncontext);
	if (retval != GP_OK) {
		printf("  Retval: %d\n", retval);
		exit (1);
	}
	canon_enable_capture(canon, TRUE, canoncontext);
	retval = camera_eosviewfinder(canon,canoncontext,1);
	if (retval != GP_OK) {
		fprintf(stderr,"camera_eosviewfinder(1): %d\n", retval);
		exit(1);
	}
	/*set_capturetarget(canon, canoncontext);*/
	printf("Taking 100 previews and saving them to snapshot-XXX.jpg ...\n");
	for (i=0;i<100;i++) {
		CameraFile *file;
		char output_file[32];

		fprintf(stderr,"preview %d\n", i);
		retval = gp_file_new(&file);
		if (retval != GP_OK) {
			fprintf(stderr,"gp_file_new: %d\n", retval);
			exit(1);
		}

		/* autofocus every 10 shots */
		if (i%10 == 9) {
			camera_auto_focus (canon, canoncontext, 1);
			/* FIXME: wait a bit and/or poll events ? */
			camera_auto_focus (canon, canoncontext, 0);
		} else {
			camera_manual_focus (canon, (i/10-5)/2, canoncontext);
		}
#if 0 /* testcase for EOS zooming */
		{
			char buf[20];
			if (i<10) set_config_value_string (canon, "eoszoom", "5", canoncontext);
			sprintf(buf,"%d,%d",(i&0x1f)*64,(i>>5)*64);
			fprintf(stderr, "%d - %s\n", i, buf);
			set_config_value_string (canon, "eoszoomposition", buf, canoncontext);
		}
#endif
		retval = gp_camera_capture_preview(canon, file, canoncontext);
		if (retval != GP_OK) {
			fprintf(stderr,"gp_camera_capture_preview(%d): %d\n", i, retval);
			exit(1);
		}
		sprintf(output_file, "snapshot-%03d.jpg", i);
		retval = gp_file_save(file, output_file);
		if (retval != GP_OK) {
			fprintf(stderr,"gp_camera_capture_preview(%d): %d\n", i, retval);
			exit(1);
		}
		gp_file_unref(file);
	/*
		sprintf(output_file, "image-%03d.jpg", i);
	        capture_to_file(canon, canoncontext, output_file);
	*/
	}
	retval = camera_eosviewfinder(canon,canoncontext,0);
	if (retval != GP_OK) {
		fprintf(stderr,"camera_eosviewfinder(0): %d\n", retval);
		exit(1);
	}

	sleep(10);
	gp_camera_exit(canon, canoncontext);
	return 0;
}