// // ExF1Ctrl ver. 0.1. // // This program can be used to interface the Casio EX-F1 over USB. // Firmware rev. 2.00 is required. This version is available here: // http://support.casio.com/download.php?rgn=4&cid=001&pid=573 // // Written by Jens Skovgaard Olsen (info@feischmeckerfoosball.com) // #include "exf1ctrl.h" int change_status(int status, int code, int device_num) { FILE *file; char *dev_name = malloc(1000); sprintf(dev_name, "STATUS_%i", device_num+1); file = fopen(dev_name ,"w"); /* apend file (add text to a file or create a file if it does not exist.*/ fprintf(file,"%i",code); /*writes*/ fclose(file); if(status == 1) exit(code); } int main(int argc, char** argv) { char input[64], com, name[32], tname[32]; int arg, nargs, addr, val, i; float arg1, arg2; /* printf(" \n"); printf(" ********************************************************************\n"); printf(" * *\n"); printf(" * ExF1Ctrl ver. 0.1 *\n"); printf(" * ----------------- *\n"); printf(" * This program is able to interface to the Casio EX-F1 over USB. *\n"); printf(" * Firmware rev. 2.00 is required and the camera must be put in *\n"); printf(" * remote control mode before being connected to the host. *\n"); printf(" * -- *\n"); printf(" * Jens Skovgaard Olsen *\n"); printf(" * info@feinschmeckerfoosball.com *\n"); printf(" * *\n"); printf(" ********************************************************************\n"); printf(" \n"); printf(" Hint: a [x] sets aperture (x = 1-10).\n"); printf(" 1: F2.7 (default).\n"); printf(" 2: F3.0.\n"); printf(" 3: F3.3.\n"); printf(" 4: F3.8.\n"); printf(" 5: F4.2.\n"); printf(" 6: F4.7.\n"); printf(" 7: F5.3.\n"); printf(" 8: F6.0.\n"); printf(" 9: F6.7.\n"); printf(" 10: F7.5.\n"); printf(" \n"); printf(" Hint: c [x] sets mode / movie mode (x = 1-9).\n"); printf(" 1: Single shot (default).\n"); printf(" 2: Continuous shutter.\n"); printf(" 3: Prerecord still image.\n"); printf(" 4: Movie (STD).\n"); printf(" 5: Prerecord movie (STD).\n"); printf(" 6: Movie (HD).\n"); printf(" 7: Prerecord movie (HD).\n"); printf(" 8: Movie (HS).\n"); printf(" 9: Prerecord movie (HS).\n"); printf("\n"); printf(" Hint: e [x] sets exposure (x = 1-4).\n"); printf(" 1: M.\n"); printf(" 2: Auto (default).\n"); printf(" 3: A.\n"); printf(" 4: S.\n"); printf("\n"); printf(" Hint: f [x] sets focus (x = 1-4).\n"); printf(" 1: Auto (default).\n"); printf(" 2: Macro.\n"); printf(" 3: Infinity.\n"); printf(" 4: Manual.\n"); printf("\n"); printf(" Hint: h activates half press.\n"); printf("\n"); printf(" Hint: i [x] sets iso (x = 1-6).\n"); printf(" 1: Auto (default).\n"); printf(" 2: 100.\n"); printf(" 3: 200.\n"); printf(" 4: 400.\n"); printf(" 5: 800.\n"); printf(" 6: 1600.\n"); printf("\n"); printf(" Hint: q quits this program.\n"); printf("\n"); printf(" Hint: m [x [y]] records a x second long movie called y.\n"); printf("\n"); printf(" Hint: s [x [y [z]]] activates shutter and stores a picture called x\n"); printf(" and a thumbnail called y. If the continous shutter is enabled\n"); printf(" (modes 2 and 3), z determines the shutter duration.\n"); printf("\n"); printf(" Hint: v [x [y]] focus y steps. x=in focuses in and x=out focuses out.\n"); printf(" Continous focus is used if y is not defined.\n"); printf("\n"); printf(" Hint: z [x [y]] zooms y steps. x=in zooms in and x=out zooms out.\n"); printf(" Continous zoom is used if y is not defined.\n"); printf("\n"); printf("\n"); printf("> Initializing camera... \n"); fflush(stdout); */ //!!! vyber cisla zarizeni int device_num; if( argc > 1) { device_num = argv[1][0]-'0'-1; } else device_num = 0; /* printf( "%c \n" , argv[2][0] );*/ // zapise na disk zpravu o tom, že to nastavuje foťák change_status(0, 1, device_num); if( argc == 3 && argv[2][0]=='r') { printf("Cleaning\n"); if (!init_camera(device_num)) change_status(1, 0, device_num); exit_camera(); change_status(1, 0, device_num); } // char * dev_name[1]; // // // printf(dev_name); // printf("\n"); // // strcpy(dev_name); // printf( strcat("-", dev_name)); // if (!init_camera(device_num)) change_status(1, 0, device_num); printf("Camera started\n"); while (1) { printf("> "); gets(input); sscanf(input, "%c", &com); switch (com) { case 'S': nargs = sscanf(input, "%c %f %f", &com, &arg1, &arg2); printf("> HS video config ... \n"); setup_HS_movie(arg1, arg2); change_status(0,0, device_num); //nastaveni bylo dokonceno !!!! break; case 'a': nargs = sscanf(input, "%c %d", &com, &arg); printf("> Configuring aperture... \n"); switch (arg) { case 1: setup_aperture(DATA_APERTURE_F2_7); break; case 2: setup_aperture(DATA_APERTURE_F3_0); break; case 3: setup_aperture(DATA_APERTURE_F3_3); break; case 4: setup_aperture(DATA_APERTURE_F3_8); break; case 5: setup_aperture(DATA_APERTURE_F4_2); break; case 6: setup_aperture(DATA_APERTURE_F4_7); break; case 7: setup_aperture(DATA_APERTURE_F5_3); break; case 8: setup_aperture(DATA_APERTURE_F6_0); break; case 9: setup_aperture(DATA_APERTURE_F6_7); break; case 10: setup_aperture(DATA_APERTURE_F7_5); break; default: printf("> Unknown aperture setting. \n"); } break; case 'c': nargs = sscanf(input, "%c %d", &com, &arg); printf("> Configuring shutter mode / movie mode... \n"); switch (arg) { case 1: setup_shutter(SHUTTER_NORMAL, FALSE); break; case 2: setup_shutter(SHUTTER_CONTINOUS, FALSE); break; case 3: setup_shutter(SHUTTER_NORMAL, TRUE); break; case 4: setup_movie(MOVIE_STD, FALSE); break; case 5: setup_movie(MOVIE_STD, TRUE); break; case 6: setup_movie(MOVIE_HD, FALSE); break; case 7: setup_movie(MOVIE_HD, TRUE); break; case 8: setup_movie(MOVIE_HS, FALSE); break; case 9: setup_movie(MOVIE_HS, TRUE); break; default: printf("> This mode is yet to be supported. \n"); } break; case 'e': nargs = sscanf(input, "%c %d", &com, &arg); printf("> Configuring exposure... \n"); switch (arg) { case 1: setup_exposure(DATA_EXPOSURE_M); break; case 2: setup_exposure(DATA_EXPOSURE_AUTO); break; case 3: setup_exposure(DATA_EXPOSURE_A); break; case 4: setup_exposure(DATA_EXPOSURE_S); break; default: printf("> Unknown focus setting. \n"); } break; case 'f': nargs = sscanf(input, "%c %d", &com, &arg); printf("> Configuring focus... \n"); switch (arg) { case 1: setup_focus(DATA_FOCUS_AF); break; case 2: setup_focus(DATA_FOCUS_MACRO); break; case 3: setup_focus(DATA_FOCUS_INFINITY); break; case 4: setup_focus(DATA_FOCUS_MANUAL); break; default: printf("> Unknown exposure setting. \n"); } break; case 'h': printf("> Half press... \n"); half_shutter(); break; case 'i': nargs = sscanf(input, "%c %d", &com, &arg); printf("> Configuring ISO... \n"); switch (arg) { case 1: setup_iso(DATA_IS0_AUTO); break; case 2: setup_iso(DATA_IS0_100); break; case 3: setup_iso(DATA_IS0_200); break; case 4: setup_iso(DATA_IS0_400); break; case 5: setup_iso(DATA_IS0_800); break; case 6: setup_iso(DATA_IS0_1600); break; default: printf("> Unknown ISO setting. \n"); } break; case 'm': nargs = sscanf(input, "%c %d %s", &com, &arg, &name); printf("> Recording... \n"); if (nargs == 3) { char *dev_name = malloc(1000); sprintf(dev_name, "%s-%i.MOV", name, device_num+1); movie(dev_name , arg); } else if (nargs == 2) movie("CIMG001.MOV", arg); else movie("CIMG001.MOV", -1); break; case 'q': exit_camera(); change_status(1, 0, device_num); case 's': nargs = sscanf(input, "%c %s %s %d", &com, &name, &tname, &arg); printf("> Taking picture... \n"); switch (nargs) { case 1: shutter("CIMG001.jpg", "CIMG001_thumb.jpg", -1); break; case 2: shutter(strcat(name,".jpg"), strcat(name, "_thumb.jpg"), -1); break; case 3: shutter(strcat(name,".jpg"), strcat(tname,".jpg"), -1); break; case 4: shutter(strcat(name,".jpg"), strcat(tname,".jpg"), arg); break; } break; case 'v': nargs = sscanf(input, "%c %s %d", &com, &name, &arg); printf("> Focusing... \n"); switch (nargs) { case 1: focus(TRUE, TRUE); break; case 2: if (strcmp(name, "in") == 0) focus(TRUE, TRUE); else if (strcmp(name, "out") == 0) focus(FALSE, TRUE); else printf("> Unrecognized parameter: %s!\n", name); break; case 3: if (strcmp(name, "in") == 0) for (i=0; i Unrecognized parameter: %s!\n", name); break; } break; case 'x': nargs = sscanf(input, "%c %x %x", &com, &addr, &val); if (nargs == 3) { printf("> Setting property 0x%X to 0x%X... \n", addr, val); exf1Cmd(CMD_WRITE, addr, val); } else printf("> Three arguments required... \n"); break; case 'z': nargs = sscanf(input, "%c %s %d", &com, &name, &arg); printf("> Zooming... \n"); switch (nargs) { case 1: zoom(TRUE, TRUE); break; case 2: if (strcmp(name, "in") == 0) zoom(TRUE, TRUE); else if (strcmp(name, "out") == 0) zoom(FALSE, TRUE); else printf("> Unrecognized parameter: %s!\n", name); break; case 3: if (strcmp(name, "in") == 0) for (i=0; i Unrecognized parameter: %s!\n", name); break; } break; default: printf("> Unrecognized command: %s \n", input); break; } } change_status(1, 0, device_num); }