示例#1
0
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;	
}
示例#2
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;	
}
示例#3
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);
}
示例#4
0
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);
}