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; }
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; }
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; }