ВНИМАНИЕ! На форуме начался конкурс - астрофотография месяца - ИЮНЬ!
0 Пользователей и 1 Гость просматривают эту тему.
Решил я написать простенькую прогу, которая делала бы наводила телескоп, делала снимок максимом и вычисляла пинпоинтом координаты центра кадра для последующей синхронизации телескопа. Снимок делает, сначала при обращении app->get_CurrentDocument()->get_PinPointStatus() возвращается значение "1", собственно так и должно быть если снимок не обмерялся. Дальше начинается самое интересное: после PinPointSolve(RA,Dec) в максиме открывается окошко пинпоинта, где расписывается текущее состояние процесса, в это время get_PinPointStatus() = 3 (пока все нормально). Потом окошко исчезает, а get_PinPointStatus() = 1 вместо положенных 2 после окончания вычислений. Координаты снимка - по нулям. Если запускать вручную, то все измеряется нормально. Пинпоинт 4 версии с таблеткой, Максим - 4.61.
Устраивает, но я планирую сделать программу, которая бы автоматизировала процесс съемки нескольких объектов за ночь.
только непонятно, почему пинпоинт делает только одну итерацию при вычислении координат (придется писать код, который координаты перебирает? )
да и требования к точности уж слишком большие - при ошибке наведения в 30 секунд уже вылетает
Поле для отождествления тоже можно задавать, вплоть до 676 процентов от снимка, только не очень похоже что это работает
Function TOptsDlg.SolveFITS(Var RA, Dec : Double) : Boolean;Var I : Integer;begin // Резолвинг PinPoint Result:=False; I:=0; Try I:=MC_MainForm.MaxIm.Document.PinPointStatus; Except //On E : Exception do ShowMessage('PinPoint Error '+E.Message); Exit; End; If I = 1 Then Begin Try MC_MainForm.MaxIm.Document.PinPointSolve; Repeat Sleep(100); Application.ProcessMessages; I:=MC_MainForm.MaxIm.Document.PinPointStatus; Until I = 2; Except //On E : Exception do ShowMessage(E.Message); Exit; End; End; If I = 2 Then Begin Try Ra:=MC_MainForm.MaxIm.Document.CenterRA; Dec:=MC_MainForm.MaxIm.Document.CenterDec; Result:=True; Except Result:=False; End; End;end;[.....] If jgPinSlew.Checked Then Begin // Запомнить старые настройки камеры // Установить новые настройки CaptureFrame(udSlewExp.Position, udSlewBin.Position, udSlewCrop.Position); WriteFITSHeaders('SLEW', Ra, Dec); //MC_MainForm.MaxIm.Document.OpenFile('C:\WORK\SatTrack\Images\PinPointTest.fit'); // PinPoint Result:=False; If SolveFITS(R, D) Then Begin // Синхронизация телескопа Result:=Sqrt(Sqr(R-Ra)*Cs(Dec)+Sqr(D-Dec)) < udPinPointErr.Position; MC_MainForm.jsbStatusBar.Panels[2].Text:=Format('Err %.1f''', [60*Sqrt(Sqr(R-Ra)*Cs(Dec)+Sqr(D-Dec))]); Telescope.SyncToCoordinates(R, D); // Повторное наведение Telescope.SlewToCoordinates(Ra, Dec); // Еще один снимок If cbSlewSecondExp.Checked Then CaptureFrame(udSlewExp.Position, udSlewBin.Position, udSlewCrop.Position); End; End;[.....]
while (app->get_CurrentDocument()->get_PinPointStatus()==3) //waiting for measuring{ unsigned int sl=1000; Sleep(sl); Application->ProcessMessages();}
do{ Sleep(1000); Application->ProcessMessages();} while (app->get_CurrentDocument()->get_PinPointStatus()==2)
Может быть, формат даты в заголовке FITS неверен? Попробуйте отредактировать и записать поле DATE-OBS в виде 2009-10-26T23:58:37