Example #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;
	}
int
main(int argc, char **argv) {
	Camera	*canon;
	int	retval;
	GPContext *canoncontext = sample_create_context();

	gettimeofday(&starttime,NULL);
	gp_log_add_func(GP_LOG_ERROR, errordumper, NULL);
	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);
	/*set_capturetarget(canon, canoncontext);*/
	capture_to_file(canon, canoncontext, "foo.jpg");
	gp_camera_exit(canon, canoncontext);
	return 0;
}
Example #3
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;
  }
Example #4
0
int
main(int argc, char **argv) {
	Camera	*camera;
	int	retval;
	GPContext *context = sample_create_context();
	FILE 	*f;
	char	*data;
	unsigned long size;

	gp_log_add_func(GP_LOG_ERROR, errordumper, NULL);
	gp_camera_new(&camera);

	/* 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(camera, context);
	if (retval != GP_OK) {
		printf("  Retval of capture_to_file: %d\n", retval);
		exit (1);
	}
	capture_to_file(camera, context, "foo.jpg");

	capture_to_memory(camera, context, (const char**)&data, &size);

	f = fopen("foo2.jpg", "wb");
	if (f) {
		retval = fwrite (data, size, 1, f);
		if (retval != size) {
			printf("  fwrite size %ld, written %d\n", size, retval);
		}
		fclose(f);
	} else
		printf("  fopen foo2.jpg failed.\n");
	gp_camera_exit(camera, context);
	return 0;
}