コード例 #1
0
 public DelayedCreationOccultWrapper(OccultToolsAddinSettings settings, IAOTAClientCallbacks callbacks)
 {
     m_Settings  = settings;
     m_Callbacks = callbacks;
     m_Delegate  = null;
 }
コード例 #2
0
ファイル: OccultSDKWrapper.cs プロジェクト: hpavlov/tangra3
 public OccultSDKWrapper(IAOTAClientCallbacks clientCallbacks)
 {
     m_ClientCallbacks = clientCallbacks;
 }
コード例 #3
0
 internal static IOccultWrapper CreateOccultWrapper(OccultToolsAddinSettings settings, IAOTAClientCallbacks callbacks)
 {
     return(new DelayedCreationOccultWrapper(settings, callbacks));
 }
コード例 #4
0
ファイル: OccultSDKWrapper.cs プロジェクト: hpavlov/tangra3
            internal static bool RunAOTA(ILightCurveDataProvider dataProvider, IWin32Window parentWindow, IAOTAClientCallbacks clientCallbacks)
            {
                try
                {
                    if (m_AotaInstance == null)
                        m_AotaInstance = Activator.CreateInstance(TYPE_AOTA_ExternalAccess) as Occult.SDK.IAOTAExternalAccess;

                    ShieldedCall(() => m_AotaInstance.InitialiseAOTA(dataProvider.FileName, clientCallbacks));

                    ISingleMeasurement[] measurements = dataProvider.GetTargetMeasurements();

                    bool hasReliableTimeBase = dataProvider.HasReliableTimeBase;

                    float[] data = measurements.Select(x => x.Measurement).ToArray();
                    float[] frameIds = measurements.Select(x => (float)x.CurrFrameNo).ToArray();

                    float[] dataBg = measurements.Select(x => x.Background).ToArray();
                    ShieldedCall(() => m_AotaInstance.Set_TargetData_BackgroundAlreadySubtracted(data, dataBg));

                    ShieldedCall(() => m_AotaInstance.Set_FrameID(frameIds));

                    DateTime[] timestamps = measurements.Select(x => x.Timestamp).ToArray();

                    hasReliableTimeBase = hasReliableTimeBase &&
                        timestamps[0].Date != DateTime.MinValue &&
                        timestamps[measurements.Length - 1].Date != DateTime.MinValue &&
                        timestamps[0].Date.Ticks < timestamps[measurements.Length - 1].Ticks;

                    double[] secondsFromUTMidnight;
                    long startFrameStartDayTicks;

                    bool cameraCorrectionsHaveBeenApplied = dataProvider.CameraCorrectionsHaveBeenApplied && dataProvider.HasEmbeddedTimeStamps;

                    startFrameStartDayTicks = hasReliableTimeBase ? timestamps[0].Date.Ticks : timestamps.FirstOrDefault(x => x != DateTime.MinValue).Date.Ticks;
                    secondsFromUTMidnight = new double[timestamps.Length];
                    for (int i = 0; i < timestamps.Length; i++)
                    {
                        if (!measurements[i].IsCorrectedForInstrumentalDelay && cameraCorrectionsHaveBeenApplied)
                            // Individual frames for which instrumental delays hasn't been applied even that instrumental delay is applied for the file, are marked as blank
                            secondsFromUTMidnight[i] = 0;
                        else if (timestamps[i] != DateTime.MinValue)
                            secondsFromUTMidnight[i] = Math.Truncate(new TimeSpan(timestamps[i].Ticks - startFrameStartDayTicks).TotalSeconds * 10000) / 10000.0;
                        else
                            secondsFromUTMidnight[i] = 0;
                    }

                    ShieldedCall(() => m_AotaInstance.Set_TimeBase(secondsFromUTMidnight, cameraCorrectionsHaveBeenApplied));

                    if (cameraCorrectionsHaveBeenApplied)
                    {
                        string cameraName = dataProvider.VideoCameraName;
                        if (!string.IsNullOrEmpty(cameraName))
                            ShieldedCall(() => m_AotaInstance.Set_VideoCamera(cameraName));
                    }

                    // Now go and set any comparison stars
                    for (int i = 0; i < dataProvider.NumberOfMeasuredComparisonObjects; i++)
                    {
                        ISingleMeasurement[] compMeasurements = dataProvider.GetComparisonObjectMeasurements(i);

                        if (compMeasurements != null)
                        {
                            float[] compData = compMeasurements.Select(x => x.Measurement).ToArray();

                            if (i == 0)
                                ShieldedCall(() => m_AotaInstance.Set_Comp1Data(compData));
                            else if (i == 1)
                                ShieldedCall(() => m_AotaInstance.Set_Comp2Data(compData));
                            else if (i == 2)
                                ShieldedCall(() => m_AotaInstance.Set_Comp3Data(compData));
                        }
                    }

                     ShieldedCall(() => m_AotaInstance.Camera = new Occult.SDK.Camera()
                        {
                            CameraType = dataProvider.VideoCameraName,
                            VideoSystem = dataProvider.VideoSystem,
                            FramesIntegrated = dataProvider.NumberIntegratedFrames
                        });

                    int firstFrameIndex = 0;// (int)frameIds[0];
                    int framesInIntegration = 1;

                    ShieldedCall(() => m_AotaInstance.RunAOTA(null, firstFrameIndex, framesInIntegration, false));

                    return true;
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex.ToString());
                    MessageBox.Show(ex is TargetInvocationException ? ex.InnerException.Message : ex.Message, "AOTA Add-in Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                return false;
            }
コード例 #5
0
 public OccultSDKWrapper(IAOTAClientCallbacks clientCallbacks)
 {
     m_ClientCallbacks = clientCallbacks;
 }
コード例 #6
0
            internal static bool RunAOTA(ILightCurveDataProvider dataProvider, IWin32Window parentWindow, IAOTAClientCallbacks clientCallbacks)
            {
                try
                {
                    if (m_AotaInstance == null)
                    {
                        m_AotaInstance = Activator.CreateInstance(TYPE_AOTA_ExternalAccess) as Occult.SDK.IAOTAExternalAccess;
                    }

                    ShieldedCall(() => m_AotaInstance.InitialiseAOTA(dataProvider.FileName, clientCallbacks));

                    ISingleMeasurement[] measurements = dataProvider.GetTargetMeasurements();

                    bool hasReliableTimeBase = dataProvider.HasReliableTimeBase;

                    float[] data     = measurements.Select(x => x.Measurement).ToArray();
                    float[] frameIds = measurements.Select(x => (float)x.CurrFrameNo).ToArray();

                    float[] dataBg = measurements.Select(x => x.Background).ToArray();
                    ShieldedCall(() => m_AotaInstance.Set_TargetData_BackgroundAlreadySubtracted(data, dataBg));

                    ShieldedCall(() => m_AotaInstance.Set_FrameID(frameIds));

                    DateTime[] timestamps = measurements.Select(x => x.Timestamp).ToArray();

                    hasReliableTimeBase = hasReliableTimeBase &&
                                          timestamps[0].Date != DateTime.MinValue &&
                                          timestamps[measurements.Length - 1].Date != DateTime.MinValue &&
                                          timestamps[0].Date.Ticks < timestamps[measurements.Length - 1].Ticks;

                    double[] secondsFromUTMidnight;
                    long     startFrameStartDayTicks;

                    bool cameraCorrectionsHaveBeenApplied = dataProvider.CameraCorrectionsHaveBeenApplied && dataProvider.HasEmbeddedTimeStamps;

                    startFrameStartDayTicks = hasReliableTimeBase ? timestamps[0].Date.Ticks : timestamps.FirstOrDefault(x => x != DateTime.MinValue).Date.Ticks;
                    secondsFromUTMidnight   = new double[timestamps.Length];
                    for (int i = 0; i < timestamps.Length; i++)
                    {
                        if (!measurements[i].IsCorrectedForInstrumentalDelay && cameraCorrectionsHaveBeenApplied)
                        {
                            // Individual frames for which instrumental delays hasn't been applied even that instrumental delay is applied for the file, are marked as blank
                            secondsFromUTMidnight[i] = 0;
                        }
                        else if (timestamps[i] != DateTime.MinValue)
                        {
                            secondsFromUTMidnight[i] = Math.Truncate(new TimeSpan(timestamps[i].Ticks - startFrameStartDayTicks).TotalSeconds * 10000) / 10000.0;
                        }
                        else
                        {
                            secondsFromUTMidnight[i] = 0;
                        }
                    }

                    ShieldedCall(() => m_AotaInstance.Set_TimeBase(secondsFromUTMidnight, cameraCorrectionsHaveBeenApplied));

                    if (cameraCorrectionsHaveBeenApplied)
                    {
                        string cameraName = dataProvider.VideoCameraName;
                        if (!string.IsNullOrEmpty(cameraName))
                        {
                            ShieldedCall(() => m_AotaInstance.Set_VideoCamera(cameraName));
                        }
                    }
                    else
                    {
                        MessageBox.Show(parentWindow, "The times to be given to AOTA are not corrected for instrumental delays.\r\n\r\nThis means that you are expected to select the video camera and frame reate from the 'Camera corrections' section in tab '6. Camera corrections & final times' and apply the instrumental delays in AOTA.", "Tangra", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }

                    // Now go and set any comparison stars
                    for (int i = 0; i < dataProvider.NumberOfMeasuredComparisonObjects; i++)
                    {
                        ISingleMeasurement[] compMeasurements = dataProvider.GetComparisonObjectMeasurements(i);

                        if (compMeasurements != null)
                        {
                            float[] compData = compMeasurements.Select(x => x.Measurement).ToArray();

                            if (i == 0)
                            {
                                ShieldedCall(() => m_AotaInstance.Set_Comp1Data(compData));
                            }
                            else if (i == 1)
                            {
                                ShieldedCall(() => m_AotaInstance.Set_Comp2Data(compData));
                            }
                            else if (i == 2)
                            {
                                ShieldedCall(() => m_AotaInstance.Set_Comp3Data(compData));
                            }
                        }
                    }

                    ShieldedCall(() => m_AotaInstance.Camera = new Occult.SDK.Camera()
                    {
                        CameraType       = dataProvider.VideoCameraName,
                        VideoSystem      = dataProvider.VideoSystem,
                        FramesIntegrated = dataProvider.NumberIntegratedFrames
                    });

                    int firstFrameIndex     = 0;// (int)frameIds[0];
                    int framesInIntegration = 1;

                    ShieldedCall(() => m_AotaInstance.RunAOTA(null, firstFrameIndex, framesInIntegration, false));

                    return(true);
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex.ToString());
                    MessageBox.Show(ex is TargetInvocationException ? ex.InnerException.Message : ex.Message, "AOTA Add-in Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                return(false);
            }
コード例 #7
0
 public DelayedCreationOccultWrapper(OccultToolsAddinSettings settings, IAOTAClientCallbacks callbacks)
 {
     m_Settings = settings;
     m_Callbacks = callbacks;
     m_Delegate = null;
 }
コード例 #8
0
 internal static IOccultWrapper CreateOccultWrapper(OccultToolsAddinSettings settings, IAOTAClientCallbacks callbacks)
 {
     return new DelayedCreationOccultWrapper(settings, callbacks);
 }