internal static void CalcEncoderTargets() { object HC = null; double targetRAEncoder = 0; double targetDECEncoder = 0; double currentRAEncoder = 0; double currentDECEncoder = 0; eqmodvector.Coordt tmpcoord = new eqmodvector.Coordt(); double tRa = 0; double tha = 0; double tPier = 0; try { EQMath.gSlewStatus = false; //stop the motors PEC.PEC_StopTracking(); EQMath.eqres = UpgradeSolution1Support.PInvoke.SafeNative.eqcontrl.EQ_MotorStop(2); // eqres = EQ_MotorStop(0) // eqres = EQ_MotorStop(1) // 'Wait for motor stop , Need to add timeout routines here // Do // eqres = EQ_GetMotorStatus(0) // If (eqres = EQ_NOTINITIALIZED) Or (eqres = EQ_COMNOTOPEN) Or (eqres = EQ_COMTIMEOUT) Then GoTo SL01 // Loop While (eqres And EQ_MOTORBUSY) <> 0 // //SL01: // Do // eqres = EQ_GetMotorStatus(1) // If (eqres = EQ_NOTINITIALIZED) Or (eqres = EQ_COMNOTOPEN) Or (eqres = EQ_COMTIMEOUT) Then GoTo SL02 // Loop While (eqres And EQ_MOTORBUSY) <> 0 // //SL02: // read current currentRAEncoder = Common.EQGetMotorValues(0); currentDECEncoder = Common.EQGetMotorValues(1); tha = EQMath.RangeHA(gTargetRA - EQMath.EQnow_lst(EQMath.gLongitude * EQMath.DEG_RAD)); if (tha < 0) { if (gCWUP) { if (EQMath.gHemisphere == 0) { tPier = 0; } else { tPier = 1; } tRa = gTargetRA; } else { if (EQMath.gHemisphere == 0) { tPier = 1; } else { tPier = 0; } tRa = EQMath.Range24(gTargetRA - 12); } } else { if (gCWUP) { if (EQMath.gHemisphere == 0) { tPier = 1; } else { tPier = 0; } tRa = EQMath.Range24(gTargetRA - 12); } else { if (EQMath.gHemisphere == 0) { tPier = 0; } else { tPier = 1; } tRa = gTargetRA; } } //Compute for Target RA/DEC Encoder targetRAEncoder = EQMath.Get_RAEncoderfromRA(tRa, 0, EQMath.gLongitude, EQMath.gRAEncoder_Zero_pos, EQMath.gTot_RA, EQMath.gHemisphere); targetDECEncoder = EQMath.Get_DECEncoderfromDEC(gTargetDec, tPier, EQMath.gDECEncoder_Zero_pos, EQMath.gTot_DEC, EQMath.gHemisphere); if (gCWUP) { //UPGRADE_TODO: (1067) Member Add_Message is not defined in type Variant. More Information: https://www.mobilize.net/vbtonet/ewis/ewi1067 HC.Add_Message("Goto: CW-UP slew requested"); // if RA limits are active //UPGRADE_TODO: (1067) Member ChkEnableLimits is not defined in type Variant. More Information: https://www.mobilize.net/vbtonet/ewis/ewi1067 if (Convert.ToDouble(HC.ChkEnableLimits.value) == 1 && EQMath.gRA_Limit_East != 0 && EQMath.gRA_Limit_West != 0) { // check that the target position is within limits if (EQMath.gHemisphere == 0) { if (targetRAEncoder < EQMath.gRA_Limit_East || targetRAEncoder > EQMath.gRA_Limit_West) { // target position is outside limits gCWUP = false; } } else { if (targetRAEncoder > EQMath.gRA_Limit_East || targetRAEncoder < EQMath.gRA_Limit_West) { // target position is outside limits gCWUP = false; } } // if target position is outside limits if (!gCWUP) { //UPGRADE_TODO: (1067) Member Add_Message is not defined in type Variant. More Information: https://www.mobilize.net/vbtonet/ewis/ewi1067 HC.Add_Message("Goto: RA Limits prevent CW-UP slew"); //then abandon Counter Weights up Slew and recalculate for a standard slew. if (tha < 0) { if (EQMath.gHemisphere == 0) { tPier = 1; } else { tPier = 0; } tRa = EQMath.Range24(gTargetRA - 12); } else { if (EQMath.gHemisphere == 0) { tPier = 0; } else { tPier = 1; } tRa = gTargetRA; } targetRAEncoder = EQMath.Get_RAEncoderfromRA(tRa, 0, EQMath.gLongitude, EQMath.gRAEncoder_Zero_pos, EQMath.gTot_RA, EQMath.gHemisphere); targetDECEncoder = EQMath.Get_DECEncoderfromDEC(gTargetDec, tPier, EQMath.gDECEncoder_Zero_pos, EQMath.gTot_DEC, EQMath.gHemisphere); } } } if (!Alignment.gThreeStarEnable) { Alignment.gSelectStar = 0; currentRAEncoder = EQMath.Delta_RA_Map(currentRAEncoder); currentDECEncoder = EQMath.Delta_DEC_Map(currentDECEncoder); } else { // Transform target using model switch (Common.gAlignmentMode) { case 2: // n-star+nearest tmpcoord = EQMath.DeltaSyncReverse_Matrix_Map(targetRAEncoder - EQMath.gRASync01, targetDECEncoder - EQMath.gDECSync01); break; case 1: // n-star tmpcoord = EQMath.Delta_Matrix_Map(targetRAEncoder - EQMath.gRASync01, targetDECEncoder - EQMath.gDECSync01); break; default: // nearest tmpcoord = EQMath.Delta_Matrix_Map(targetRAEncoder - EQMath.gRASync01, targetDECEncoder - EQMath.gDECSync01); if (tmpcoord.f == 0) { tmpcoord = EQMath.DeltaSyncReverse_Matrix_Map(targetRAEncoder - EQMath.gRASync01, targetDECEncoder - EQMath.gDECSync01); } break; } targetRAEncoder = tmpcoord.x; targetDECEncoder = tmpcoord.Y; } //Execute the actual slew gGotoParams.RA_targetencoder = targetRAEncoder; gGotoParams.RA_currentencoder = currentRAEncoder; gGotoParams.DEC_targetencoder = targetDECEncoder; gGotoParams.DEC_currentencoder = currentDECEncoder; //UPGRADE_TODO: (1067) Member Add_Message is not defined in type Variant. More Information: https://www.mobilize.net/vbtonet/ewis/ewi1067 HC.Add_Message("Goto: " + EQMath.FmtSexa(gTargetRA, false) + " " + EQMath.FmtSexa(gTargetDec, true)); // HC.Add_Message "Goto: RaEnc=" & CStr(currentRAEncoder) & " Target=" & CStr(targetRAEncoder) // HC.Add_Message "Goto: DecEnc=" & CStr(currentDECEncoder) & " Target=" & CStr(targetDECEncoder) } catch { } }
//UPGRADE_NOTE: (2041) The following line was commented. More Information: https://www.mobilize.net/vbtonet/ewis/ewi2041 //[DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] //extern public static int GetTickCount(); private void EncoderTimer_Timer() { eqmodvector.Coordt tmpcoord = new eqmodvector.Coordt(); double tRa = 0; double tAlt = 0; double tAz = 0; object tmpRa = null; int tmpDec = 0; //Avoid overruns if (EncoderTimerFlag) { EncoderTimerFlag = false; //UPGRADE_TODO: (1067) Member CheckRASync is not defined in type HC. More Information: https://www.mobilize.net/vbtonet/ewis/ewi1067 //Read true motor positions tmpRa = Common.EQGetMotorValues(0); tmpDec = Common.EQGetMotorValues(1); EQMath.gEmulRA = Convert.ToDouble(tmpRa); EQMath.gEmulDEC = tmpDec; EQMath.gEmulRA_Init = EQMath.gEmulRA; EQMath.gLast_time = EQMath.EQnow_lst_norange(); EQMath.gEmulOneShot = false; if (!Alignment.gThreeStarEnable) { Alignment.gSelectStar = 0; EQMath.gRA_Encoder = EQMath.Delta_RA_Map(EQMath.gEmulRA); EQMath.gDec_Encoder = EQMath.Delta_DEC_Map(EQMath.gEmulDEC); } else { switch (Common.gAlignmentMode) { case 2: tmpcoord = EQMath.DeltaSync_Matrix_Map(EQMath.gEmulRA, EQMath.gEmulDEC); EQMath.gRA_Encoder = tmpcoord.x; EQMath.gDec_Encoder = tmpcoord.Y; break; case 1: tmpcoord = EQMath.Delta_Matrix_Reverse_Map(EQMath.gEmulRA, EQMath.gEmulDEC); EQMath.gRA_Encoder = tmpcoord.x; EQMath.gDec_Encoder = tmpcoord.Y; break; default: tmpcoord = EQMath.Delta_Matrix_Reverse_Map(EQMath.gEmulRA, EQMath.gEmulDEC); EQMath.gRA_Encoder = tmpcoord.x; EQMath.gDec_Encoder = tmpcoord.Y; if (tmpcoord.f == 0) { tmpcoord = EQMath.DeltaSync_Matrix_Map(EQMath.gEmulRA, EQMath.gEmulDEC); EQMath.gRA_Encoder = tmpcoord.x; EQMath.gDec_Encoder = tmpcoord.Y; } break; } } //Convert RA_Encoder to Hours if ((EQMath.gRA_Encoder < 0x1000000)) { EQMath.gRA_Hours = EQMath.Get_EncoderHours(EQMath.gRAEncoder_Zero_pos, EQMath.gRA_Encoder, EQMath.gTot_RA, EQMath.gHemisphere); } //Convert DEC_Encoder to DEC Degrees EQMath.gDec_DegNoAdjust = EQMath.Get_EncoderDegrees(EQMath.gDECEncoder_Zero_pos, EQMath.gDec_Encoder, EQMath.gTot_DEC, EQMath.gHemisphere); if (EQMath.gDec_Encoder < 0x1000000) { EQMath.gDec_Degrees = EQMath.Range_DEC(EQMath.gDec_DegNoAdjust); } tRa = EQMath.EQnow_lst(EQMath.gLongitude * EQMath.DEG_RAD) + EQMath.gRA_Hours; if (EQMath.gHemisphere == 0) { if ((EQMath.gDec_DegNoAdjust > 90) && (EQMath.gDec_DegNoAdjust <= 270)) { tRa -= 12; } } else { if ((EQMath.gDec_DegNoAdjust <= 90) || (EQMath.gDec_DegNoAdjust > 270)) { tRa += 12; } } tRa = EQMath.Range24(tRa); //assign global RA / Dec EQMath.gRA = tRa; EQMath.gDec = EQMath.gDec_Degrees; EQMath.gha = tRa - EQMath.EQnow_lst(EQMath.gLongitude * EQMath.DEG_RAD); //calc alt/ az poition ((Array)hadec_aa).GetValue(Convert.ToInt32(EQMath.gLatitude * EQMath.DEG_RAD), Convert.ToInt32(EQMath.gha * EQMath.HRS_RAD), Convert.ToInt32(EQMath.gDec_Degrees * EQMath.DEG_RAD), Convert.ToInt32(tAlt), Convert.ToInt32(tAz)); //asign global Alt / Az EQMath.gAlt = tAlt * EQMath.RAD_DEG; // convert to degrees from Radians EQMath.gAz = 360d - (tAz * EQMath.RAD_DEG); // convert to degrees from Radians //Poll the Motor Status while slew is active if (EQMath.gSlewStatus) { EQMath.gRAStatus = UpgradeSolution1Support.PInvoke.SafeNative.eqcontrl.EQ_GetMotorStatus(0); EQMath.gDECStatus = UpgradeSolution1Support.PInvoke.SafeNative.eqcontrl.EQ_GetMotorStatus(1); if (EQMath.gEQparkstatus == 0) { Goto.ManageGoto(); } } //UPGRADE_TODO: (1067) Member Caption is not defined in type Variant. More Information: https://www.mobilize.net/vbtonet/ewis/ewi1067 AlignmentCountLbl.Caption = Alignment.gAlignmentStars_count.ToString(); do { limit management Limits.Limits_Execute(); } EncoderTimerFlag = true; } }