void qhy10_init() { qhy_core_init(); qhy_core_getendp()->info = 0xC2; qhy_core_getendp()->read = 0xC0; qhy_core_getendp()->write = 0x40; qhy_core_getendp()->iread = 0x81; qhy_core_getendp()->iwrite = 0x01; qhy_core_getendp()->bulk = 0x82; qhy_core_getendp()->aux = 0; qhy_core_getreq()->sendregs = 0xB5; qhy_core_getreq()->startexp = 0xB3; qhy_core_getreq()->setdc201 = 0XC6; qhy_core_getreq()->getdc201 = 0XC5; qhy_core_getreq()->shutter = 0; qhy_core_getreq()->wheel = 0xC1; qhy_core_getcampars()->vid = VENDOR_ID; qhy_core_getcampars()->pid = PRODUCT_ID; qhy_core_getcampars()->shortexp = SHORTEXP; qhy_core_getcampars()->buftimes = 0; qhy_core_getcampars()->buftimef = 0; // Positively yess tec imgcam_get_tecp()->istec = 1; // 0 = Not driveable tec or no tec 1 = Driveable tec imgcam_get_tecp()->tecerr = 0; // Error reading / setting tec; imgcam_get_tecp()->tecpwr = 5; // Basically 0 - tecmax, value here is used for initial set on camera open imgcam_get_tecp()->tecmax = 255; // 0-255 imgcam_get_tecp()->tecauto = 0; // 0 = Manual, 1 = Seek target temp imgcam_get_tecp()->tectemp = 0.; // Only meaningful when tecauto = 1; imgcam_get_tecp()->settemp = 0.; // Only meaningful when tecauto = 1; imgcam_get_camui()->hasgain = 1; imgcam_get_camui()->hasoffset = 1; strcpy(imgcam_get_camui()->binstr, "1x1|2x2|4x4:0"); /// Capture size values list, just translate "Full" (frame) strcpy(imgcam_get_camui()->roistr, C_("camio","Full|512x512|256x256|128x128:0")); /// Combo box values list, keep N-<desc> format. Just translate <desc> strcpy(imgcam_get_camui()->spdstr, C_("camio","0-Slow|1-Fast:0")); strcpy(imgcam_get_camui()->ampstr, C_("camio","0-AmpOff|1-AmpOn|2-Auto:2")); strcpy(imgcam_get_camui()->modstr, ""); strcpy(imgcam_get_camui()->moddsc, ""); strcpy(imgcam_get_camui()->snrstr, ""); strcpy(imgcam_get_camui()->bppstr, "2-16Bit|:0"); strcpy(imgcam_get_camui()->byrstr, "1"); strcpy(imgcam_get_camui()->tecstr, "0:255:1:2"); strcpy(imgcam_get_camui()->whlstr, ""); // Header values imgcam_get_camui()->pszx = 6.05; imgcam_get_camui()->pszy = 6.05; imgcam_get_expar()->bitpix = 16; imgcam_get_expar()->bytepix = 2; imgcam_get_expar()->tsize = 0; imgcam_get_expar()->edit = 0; }
void qhy5ii_init() { qhy_core_init(); qhy_core_getendp()->info = 0xC2; qhy_core_getendp()->read = 0xC0; qhy_core_getendp()->write = 0x40; qhy_core_getendp()->iread = 0x81; qhy_core_getendp()->iwrite = 0x01; qhy_core_getendp()->bulk = 0x82; qhy_core_getendp()->aux = 0; qhy_core_getreq()->sendregs = 0xB5; qhy_core_getreq()->startexp = 0xB3; qhy_core_getreq()->setdc201 = 0; qhy_core_getreq()->getdc201 = 0; qhy_core_getreq()->shutter = 0; qhy_core_getreq()->wheel = 0; qhy_core_getcampars()->vid = VENDOR_ID; qhy_core_getcampars()->pid = PRODUCT_ID; qhy_core_getcampars()->shortexp = SHORTEXP; qhy_core_getcampars()->buftimes = 0; qhy_core_getcampars()->buftimef = 0; // Positively no tec imgcam_get_tecp()->istec = 0; // 0 = Not driveable tec or no tec 1 = Driveable tec imgcam_get_tecp()->tecerr = 0; // Error reading / setting tec; imgcam_get_tecp()->tecpwr = 0; // Basically 0 - tecmax imgcam_get_tecp()->tecmax = 0; // 0-255 imgcam_get_tecp()->tecauto = 0; // 0 = Manual, 1 = Seek target temp imgcam_get_tecp()->tectemp = 0.; // Only meaningful when tecauto = 1; imgcam_get_tecp()->settemp = 0.; // Only meaningful when tecauto = 1; strcpy(imgcam_get_camui()->binstr, ""); strcpy(imgcam_get_camui()->roistr, ""); /// Combo box values list, keep N-<desc> format. Just translate <desc> strcpy(imgcam_get_camui()->spdstr, C_("camio","0-Slow|1-Fast:0")); strcpy(imgcam_get_camui()->ampstr, ""); strcpy(imgcam_get_camui()->modstr, "0:255:5:50"); /// Descriptiopn for "mode" combo box strcpy(imgcam_get_camui()->moddsc, C_("camio","Usb bus speed")); strcpy(imgcam_get_camui()->snrstr, ""); strcpy(imgcam_get_camui()->bppstr, ""); strcpy(imgcam_get_camui()->byrstr, "-1"); strcpy(imgcam_get_camui()->tecstr, ""); strcpy(imgcam_get_camui()->whlstr, ""); imgcam_get_expar()->bitpix = 8; imgcam_get_expar()->bytepix = 1; imgcam_get_expar()->tsize = 0; imgcam_get_expar()->edit = 0; }
int imgcam_readout_ext(unsigned char *p) { int retval = 1; int error = 0, length_transferred = 0; if (camid < 1000) { // QHY if ((qhy_core_getcampars()->buftimes > 0) || (qhy_core_getcampars()->buftimef > 0)) { //printf("Buffering\n"); // Allow for buffering time on buffered camera usleep(((shpar.speed == 0) ? qhy_core_getcampars()->buftimes : qhy_core_getcampars()->buftimef) / shpar.bin * 1000); // Check if camera is good and ready thereafter while (qhy_getCameraStatus() == 0) { usleep(1000); /*if (camid == 9) { // Qhy9 only allow one getCamerStatus call break; }*/ } } //char *buf = NULL; //printf("Begin readout: %s\n", gettimestamp(buf)); retval = qhy_getImgData(shpar.tsize, p, &error, &length_transferred); //printf("End readout : %s\n", gettimestamp(buf)); } else if (camid == 1000) // plouis { //Meade dsi2pro if ((retval = dsi2pro_getImgData()) == 1) { length_transferred = shpar.tsize; } } #ifdef HAVE_SBIG else if (camid == 2000) { //SBIG if ((retval = (sbig_Readout(&shpar, p) == 0)) == 1) { length_transferred = shpar.tsize; } } #endif #ifdef HAVE_URVC else if (camid == 2100) { //PSBIG = URVC if ((retval = urvc_Readout(&shpar, p)) == 1) { length_transferred = shpar.tsize; } } #endif else { // Unknown retval = 0; } if (retval == 1) { if (shpar.tsize == length_transferred) { switch (camid) { case 20: qhy2old_decode(p); break; case 5: qhy5_decode(p); break; case 52: qhy5ii_decode(p); break; case 6: qhy6_decode(p); break; case 60: //printf("Decode\n"); qhy6old_decode(p); break; case 7: qhy7_decode(p); break; case 80: qhy8old_decode(p); break; case 81: qhy8l_decode(p); break; case 9: if (shpar.mode > 0) { // In dark mode // Release shutter to avoid excess strain imgcam_shutter(2); } qhy9_decode(p); break; case 91: if (shpar.mode > 0) { // In dark mode // Release shutter to avoid excess strain imgcam_shutter(2); } qhy9l_decode(p); break; case 10: qhy10_decode(p); break; case 11: qhy11_decode(p); break; case 12: qhy12_decode(p); break; case 1000: // plouis dsi2pro_decode(p); break; } loaded = 1; } else { // printf("Data: %d, %d\n", shpar.tsize, length_transferred); sprintf(cammsg, C_("camio","Bad data received, discarded")); retval = 0; } } if ((retval == 0) && (strlen(cammsg) == 0)) { strcpy(cammsg, qhy_core_msg()); // printf("%s\n", cammsg); // printf("TotalSize: %d, TSize: %d, Transferred: %d\n", shpar.totsize, shpar.tsize, length_transferred); } return (retval); }
int imgcam_abort(int mode) { int retval = 0; cammsg[0] = '\0'; switch (camid) { case 5: // retval = qhy_cmosAbortCapture(shpar.tsize); // break; case 20: case 60: case 80: if (qhy_CloseCamera()) { usleep(100000); if (imgcam_reset()) { retval = qhy_OpenCamera(qhy_core_getcampars()->vid, qhy_core_getcampars()->pid); usleep(100000); } } break; case 52: retval = qhy5ii_AbortCapture(); break; case 6: case 7: case 81: case 9: case 91: case 10: case 11: case 12: if (mode == REQKILL) { retval = qhy_ccdAbortCapture(); } else { retval = qhy_ccdStopCapture() * -1; } usleep(100000); break; case 1000: retval = dsi2pro_AbortCapture(); usleep(100000); break; #ifdef HAVE_SBIG case 2000: retval = (sbig_KillExposure() == 0); break; #endif #ifdef HAVE_URVC case 2100: retval = urvc_KillExposure(); break; #endif } loaded = (retval == 1) ? 0 : loaded; expar.edit = (retval == 1) ? 1 : expar.edit; if ((retval == 0) && (strlen(cammsg) == 0)) { strcpy(cammsg, get_core_msg()); } return (retval); }