示例#1
0
        private void UseRecentFITSConfig(TangraConfig.FITSFieldConfig config)
        {
            ucTimestampControl.UseRecentFitsConfig(config);
            ucTimestampControl2.UseRecentFitsConfig2(config);

            if (config.ExposureHeader != null)
            {
                for (int i = 0; i < cbxExposure.Items.Count; i++)
                {
                    if (((HeaderEntry)cbxExposure.Items[i]).Card.Key == config.ExposureHeader)
                    {
                        cbxExposure.SelectedIndex = i;
                        break;
                    }
                }
            }

            if (config.FileHash == m_FilesHash || m_CardNamesHash == config.CardNamesHash)
            {
                cbxExposureUnits.SelectedIndex = (int)config.ExposureUnit;
            }
            else
            {
                cbxExposureUnits.SelectedIndex = -1;
            }

            rbStartEndTimestamp.Checked = !config.IsTimeStampAndExposure;
        }
示例#2
0
        public void TestDateTimeStartEnd(string formatS, string valueS, string formatS2, string valueS2, string formatE, string valueE, string formatE2, string valueE2)
        {
            var cfg = new TangraConfig.FITSFieldConfig()
            {
                IsTimeStampAndExposure    = false,
                TimeStampIsDateTimeParts  = true,
                TimeStampType             = TangraConfig.TimeStampType.StartExposure,
                TimeStampFormat           = formatS,
                TimeStampFormat2          = formatS2,
                TimeStampHeader           = "OBS-DATE",
                TimeStampHeader2          = "OBS-TIME",
                TimeStamp2IsDateTimeParts = true,
                TimeStamp2Format          = formatE,
                TimeStamp2Format2         = formatE2,
                TimeStamp2Header          = "END-DATE",
                TimeStamp2Header2         = "END-TIME"
            };

            var timestampReader = new FITSTimeStampReader(cfg);

            var hdr = new Header();

            hdr.AddValue("OBS-DATE", valueS, "");
            hdr.AddValue("OBS-TIME", valueS2, "");
            hdr.AddValue("END-DATE", valueE, "");
            hdr.AddValue("END-TIME", valueE2, "");

            bool   isMidPoint;
            double?fitsExposure;
            var    timeStamp = timestampReader.ParseExposure(null, hdr, out isMidPoint, out fitsExposure);

            Assert.AreEqual(true, isMidPoint);
            Assert.AreEqual(0.240, fitsExposure, 0.0001);
            Assert.AreEqual(new DateTime(2017, 09, 13, 18, 04, 58).AddMilliseconds(121), timeStamp);
        }
示例#3
0
        public void TestTimeStampExposure(string format, string value)
        {
            var cfg = new TangraConfig.FITSFieldConfig()
            {
                IsTimeStampAndExposure = true,
                ExposureHeader         = "EXP",
                ExposureUnit           = TangraConfig.ExposureUnit.Milliseconds,
                TimeStampType          = TangraConfig.TimeStampType.StartExposure,
                TimeStampFormat        = format,
                TimeStampHeader        = "TIMSTMP"
            };

            var timestampReader = new FITSTimeStampReader(cfg);

            var hdr = new Header();

            hdr.AddValue("TIMSTMP", value, "");
            hdr.AddValue("EXP", "240.6", "");

            bool   isMidPoint;
            double?fitsExposure;
            var    timeStamp = timestampReader.ParseExposure(null, hdr, out isMidPoint, out fitsExposure);

            Assert.AreEqual(true, isMidPoint);
            Assert.AreEqual(0.2406, fitsExposure, 0.00001);
            Assert.AreEqual(new DateTime(2017, 09, 13, 18, 04, 58).AddMilliseconds(121 + 240.6 / 2), timeStamp);
        }
示例#4
0
        public void TestStartEndTimeStamp(string format, string value, string value2)
        {
            var cfg = new TangraConfig.FITSFieldConfig()
            {
                IsTimeStampAndExposure = false,
                TimeStampType          = TangraConfig.TimeStampType.StartExposure,
                TimeStampFormat        = format,
                TimeStampHeader        = "TIMSTMP",
                TimeStamp2Format       = format,
                TimeStamp2Header       = "TIMSTMP2"
            };

            var timestampReader = new FITSTimeStampReader(cfg);

            var hdr = new Header();

            hdr.AddValue("TIMSTMP", value, "");
            hdr.AddValue("TIMSTMP2", value2, "");

            bool   isMidPoint;
            double?fitsExposure;
            var    timeStamp = timestampReader.ParseExposure(null, hdr, out isMidPoint, out fitsExposure);

            Assert.AreEqual(true, isMidPoint);
            Assert.AreEqual(0.240, fitsExposure, 0.0001);
            Assert.AreEqual(new DateTime(2017, 09, 13, 18, 04, 58).AddMilliseconds(121), timeStamp);
        }
示例#5
0
        private bool RecentFITSConfigMatches(TangraConfig.FITSFieldConfig config)
        {
            if (config.IsTimeStampAndExposure)
            {
                var exposureCard  = m_AllCards.FirstOrDefault(x => x.Card.Key == config.ExposureHeader);
                var timestampCard = m_AllCards.FirstOrDefault(x => x.Card.Key == config.TimeStampHeader);

                if (exposureCard != null && timestampCard != null)
                {
                    return
                        (VerifyExposure(exposureCard.Card.Value) &&
                         VerifyTimeStamp(timestampCard.Card.Value, config.TimeStampFormat));
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                var startTimestampCard = m_AllCards.FirstOrDefault(x => x.Card.Key == config.TimeStampHeader);
                var endTimestampCard   = m_AllCards.FirstOrDefault(x => x.Card.Key == config.TimeStamp2Header);

                if (startTimestampCard != null && endTimestampCard != null)
                {
                    return
                        (VerifyTimeStamp(startTimestampCard.Card.Value, config.TimeStampFormat) &&
                         VerifyTimeStamp(endTimestampCard.Card.Value, config.TimeStamp2Format));
                }
                else
                {
                    return(false);
                }
            }
        }
示例#6
0
        internal void UseRecentFitsConfig2(TangraConfig.FITSFieldConfig config)
        {
            rbSeparateDateTime.Checked = config.TimeStamp2IsDateTimeParts;

            for (int i = 0; i < cbxTimeStamp.Items.Count; i++)
            {
                if (((HeaderEntry)cbxTimeStamp.Items[i]).Card.Key == config.TimeStamp2Header)
                {
                    cbxTimeStamp.SelectedIndex = i;
                    break;
                }
            }

            if (config.TimeStamp2Format != null)
            {
                cbxTimeStampFormat.SelectedIndex = cbxTimeStampFormat.Items.IndexOf(config.TimeStamp2Format);
            }

            if (config.TimeStamp2IsDateTimeParts)
            {
                for (int i = 0; i < cbxSecondCard.Items.Count; i++)
                {
                    if (((HeaderEntry)cbxSecondCard.Items[i]).Card.Key == config.TimeStamp2Header2)
                    {
                        cbxSecondCard.SelectedIndex = i;
                        break;
                    }
                }

                if (config.TimeStamp2Format2 != null)
                {
                    cbxSecondCardFormat.SelectedIndex = cbxSecondCardFormat.Items.IndexOf(config.TimeStamp2Format2);
                }
            }
        }
示例#7
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            if (!ucTimestampControl.ValidateInput())
            {
                return;
            }

            if (!m_ExposureValid)
            {
                MessageBox.Show("Please choose valid settings for the exposure.");
                return;
            }

            if (cbxExposureUnits.SelectedIndex == -1)
            {
                MessageBox.Show("Please choose exposure units.");
                cbxExposureUnits.Focus();
                return;
            }

            if (HasNegativePixels && !m_PixelMappingReviewed)
            {
                if (!ReviewPixelMapping())
                {
                    MessageBox.Show("As there are negative pixels you need to confirm the pixel value mapping before continuing.");
                    btnPixelValueMapping.Focus();
                    return;
                }
            }

            var singleTimeStampConfig = ucTimestampControl.GetSelectedInput();

            var config = new TangraConfig.FITSFieldConfig()
            {
                ExposureHeader           = cbxExposure.Text,
                ExposureUnit             = (TangraConfig.ExposureUnit)cbxExposureUnits.SelectedIndex,
                IsTimeStampAndExposure   = true,
                TimeStampIsDateTimeParts = singleTimeStampConfig.TimeStampIsDateTimeParts,
                TimeStampHeader          = singleTimeStampConfig.TimeStampHeader,
                TimeStampFormat          = singleTimeStampConfig.TimeStampFormat,
                TimeStampHeader2         = singleTimeStampConfig.TimeStampHeader2,
                TimeStampFormat2         = singleTimeStampConfig.TimeStampFormat2,
                TimeStampType            = singleTimeStampConfig.TimeStampType,
            };

            TimeStampReader = new FITSTimeStampReader(config);

            config.FileHash      = m_FilesHash;
            config.CardNamesHash = m_CardNamesHash;
            TangraConfig.Settings.RecentFITSFieldConfig.Register(config);
            TangraConfig.Settings.Save();

            FlipVertically   = cbxFlipVertically.Checked;
            FlipHorizontally = cbxFlipHorizontally.Checked;

            DialogResult = DialogResult.OK;
            Close();
        }
示例#8
0
        public void TestTimeStampType(TangraConfig.TimeStampType timeStampType, double diff)
        {
            var cfg = new TangraConfig.FITSFieldConfig()
            {
                IsTimeStampAndExposure = true,
                ExposureHeader         = "EXP",
                ExposureUnit           = TangraConfig.ExposureUnit.Milliseconds,
                TimeStampType          = timeStampType,
                TimeStampFormat        = "yyyy-MM-ddTHH:mm:ss.fff",
                TimeStampHeader        = "TIMSTMP"
            };

            var timestampReader = new FITSTimeStampReader(cfg);

            var hdr = new Header();

            hdr.AddValue("TIMSTMP", "2017-09-13T18:04:58.121", "");
            hdr.AddValue("EXP", "240.6", "");

            bool   isMidPoint;
            double?fitsExposure;
            var    timeStamp = timestampReader.ParseExposure(null, hdr, out isMidPoint, out fitsExposure);

            Assert.AreEqual(true, isMidPoint);
            Assert.AreEqual(0.2406, fitsExposure, 0.00001);
            Assert.AreEqual(new DateTime(2017, 09, 13, 18, 04, 58).AddMilliseconds(121 + diff), timeStamp);

            cfg = new TangraConfig.FITSFieldConfig()
            {
                IsTimeStampAndExposure   = true,
                TimeStampIsDateTimeParts = true,
                ExposureHeader           = "EXP",
                ExposureUnit             = TangraConfig.ExposureUnit.Milliseconds,
                TimeStampType            = timeStampType,
                TimeStampFormat          = "yyyy-MM-dd",
                TimeStampFormat2         = "HH:mm:ss.fff",
                TimeStampHeader          = "OBS-DATE",
                TimeStampHeader2         = "OBS-TIME"
            };

            timestampReader = new FITSTimeStampReader(cfg);

            hdr = new Header();
            hdr.AddValue("OBS-DATE", "2017-09-13", "");
            hdr.AddValue("OBS-TIME", "18:04:58.121", "");
            hdr.AddValue("EXP", "240.6", "");

            timeStamp = timestampReader.ParseExposure(null, hdr, out isMidPoint, out fitsExposure);

            Assert.AreEqual(true, isMidPoint);
            Assert.AreEqual(0.2406, fitsExposure, 0.00001);
            Assert.AreEqual(new DateTime(2017, 09, 13, 18, 04, 58).AddMilliseconds(121 + diff), timeStamp);
        }
示例#9
0
        internal void UseRecentFitsConfig(TangraConfig.FITSFieldConfig config)
        {
            rbSeparateDateTime.Checked = config.TimeStampIsDateTimeParts;

            for (int i = 0; i < cbxTimeStamp.Items.Count; i++)
            {
                if (((HeaderEntry)cbxTimeStamp.Items[i]).Card.Key == config.TimeStampHeader)
                {
                    cbxTimeStamp.SelectedIndex = i;
                    break;
                }
            }

            if (config.TimeStampFormat != null)
            {
                cbxTimeStampFormat.SelectedIndex = cbxTimeStampFormat.Items.IndexOf(config.TimeStampFormat);
            }

            if (config.TimeStampIsDateTimeParts)
            {
                for (int i = 0; i < cbxSecondCard.Items.Count; i++)
                {
                    if (((HeaderEntry)cbxSecondCard.Items[i]).Card.Key == config.TimeStampHeader2)
                    {
                        cbxSecondCard.SelectedIndex = i;
                        break;
                    }
                }

                if (config.TimeStampFormat2 != null)
                {
                    cbxSecondCardFormat.SelectedIndex = cbxSecondCardFormat.Items.IndexOf(config.TimeStampFormat2);
                }
            }

            if (config.FileHash == m_FilesHash || m_CardNamesHash == config.CardNamesHash)
            {
                cbxTimestampType.SelectedIndex = (int)config.TimeStampType;
            }
            else
            {
                cbxTimestampType.SelectedIndex = -1;
            }
        }
示例#10
0
 public FITSTimeStampReader(TangraConfig.FITSFieldConfig config)
 {
     m_Config = config;
 }
示例#11
0
 public FITSTimeStampReader(TangraConfig.FITSFieldConfig config)
 {
     m_Config = config;
 }
示例#12
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            if (rbTimeDuration.Checked)
            {
                if (!m_TimeStampMappingValid)
                {
                    MessageBox.Show("Please choose valid settings for the time timestamp.");
                    return;
                }

                if (!m_ExposureValid)
                {
                    MessageBox.Show("Please choose valid settings for the exposure.");
                    return;
                }

                if (cbxExposureUnits.SelectedIndex == -1)
                {
                    MessageBox.Show("Please choose exposure units.");
                    cbxExposureUnits.Focus();
                    return;
                }

                if (cbxTimestampType.SelectedIndex == -1)
                {
                    MessageBox.Show("Please choose timestamp type.");
                    cbxTimestampType.Focus();
                    return;
                }

                var config = new TangraConfig.FITSFieldConfig()
                {
                    ExposureHeader = cbxExposure.Text,
                    ExposureUnit = (TangraConfig.ExposureUnit) cbxExposureUnits.SelectedIndex,
                    TimeStampType = (TangraConfig.TimeStampType) cbxTimestampType.SelectedIndex,
                    TimeStampHeader = cbxTimeStamp.Text,
                    TimeStampFormat = cbxTimeStampFormat.Text,
                    IsTimeStampAndExposure = true
                };

                TimeStampReader = new FITSTimeStampReader(config);

                config.FileHash = m_FilesHash;
                config.CardNamesHash = m_CardNamesHash;
                TangraConfig.Settings.RecentFITSFieldConfig.Register(config);
                TangraConfig.Settings.Save();

                DialogResult = DialogResult.OK;
                Close();
            }
            else if (rbStartEndTimestamp.Checked)
            {
                if (!m_TimeStampMappingValid)
                {
                    MessageBox.Show("Please choose valid settings for the start time timestamp.");
                    return;
                }

                if (!m_TimeStamp2MappingValid)
                {
                    MessageBox.Show("Please choose valid settings for the end time timestamp.");
                    return;
                }

                var config = new TangraConfig.FITSFieldConfig()
                {
                    TimeStampHeader = cbxTimeStamp.Text,
                    TimeStampFormat = cbxTimeStampFormat.Text,
                    TimeStamp2Header = cbxTimeStamp2.Text,
                    TimeStamp2Format = cbxTimeStamp2Format.Text,
                    IsTimeStampAndExposure = false
                };

                TimeStampReader = new FITSTimeStampReader(config);

                config.FileHash = m_FilesHash;
                config.CardNamesHash = m_CardNamesHash;
                TangraConfig.Settings.RecentFITSFieldConfig.Register(config);
                TangraConfig.Settings.Save();

                DialogResult = DialogResult.OK;
                Close();
            }
        }