Exemplo n.º 1
0
 internal SerFrameInfo(SerNativeFrameInfo nativeInfo)
 {
     try
     {
         TimeStampUtc = new DateTime((long)(uint)nativeInfo.TimeStampUtcLo + ((long)(uint)nativeInfo.TimeStampUtcHi << 32));
     }
     catch (ArgumentOutOfRangeException aex)
     {
         Trace.WriteLine(aex);
         TimeStampUtc = DateTime.MinValue;
     }
 }
Exemplo n.º 2
0
 internal SerFrameInfo(SerNativeFrameInfo nativeInfo)
 {
     try
     {
         TimeStampUtc = new DateTime((long)(uint)nativeInfo.TimeStampUtcLo + ((long)(uint)nativeInfo.TimeStampUtcHi << 32));
     }
     catch (ArgumentOutOfRangeException aex)
     {
         Trace.WriteLine(aex);
         TimeStampUtc = DateTime.MinValue;
     }
 }
Exemplo n.º 3
0
 // DLL_PUBLIC HRESULT SERGetFrameInfo(long frameNo, SerLib::SerFrameInfo* frameInfo);
 public static extern int SERGetFrameInfo(int frameNo, [In, Out] ref SerNativeFrameInfo frameInfo);
Exemplo n.º 4
0
 // DLL_PUBLIC HRESULT SERGetIntegratedFrame(long startFrameNo, long framesToIntegrate, bool isSlidingIntegration, bool isMedianAveraging, unsigned long* pixels, unsigned long* originalPixels, BYTE* bitmapBytes, BYTE* bitmapDisplayBytes, unsigned int cameraBitPix, SerLib::SerFrameInfo* frameInfo);
 public static extern int SERGetIntegratedFrame(int startFrameNo, int framesToIntegrate, bool isSlidingIntegration, bool isMedianAveraging, [Out] uint[] pixels, [In, Out] uint[] originalPixels, [Out] byte[] bitmapBytes, [Out] byte[] bitmapDisplayBytes, ushort cameraBitPix, [In, Out] ref SerNativeFrameInfo frameInfo);
Exemplo n.º 5
0
 // DLL_PUBLIC HRESULT SERGetFrame(long frameNo, unsigned long* pixels, unsigned long* originalPixels, BYTE* bitmapPixels, BYTE* bitmapBytes, unsigned int cameraBitPix, SerLib::SerFrameInfo* frameInfo);
 public static extern int SERGetFrame(int frameNo, [In, Out] uint[] pixels, [In, Out] uint[] originalPixels, [In, Out] byte[] bitmapBytes, [In, Out] byte[] bitmapDisplayBytes, ushort cameraBitPix, [In, Out] ref SerNativeFrameInfo frameInfo);
Exemplo n.º 6
0
        public SerFrameInfo SerFrameInfoOnly(int index)
        {
            if (UseTimeStamp == SerUseTimeStamp.FireCaptureLog)
            {
                DateTime dt;
                if (m_FireCaptureTimeStamps.TryGetValue(1 + index, out dt))
                    return new SerFrameInfo(dt);

                return new SerFrameInfo(DateTime.MinValue);
            }
            else
            {
                var frameInfo = new SerNativeFrameInfo();

                TangraCore.SERGetFrameInfo(index, ref frameInfo);

                return new SerFrameInfo(frameInfo);
            }
        }
Exemplo n.º 7
0
        public Pixelmap GetPixelmap(int index)
        {
            if (index < FirstFrame || index > LastFrame)
                throw new ApplicationException("Invalid frame position: " + index);

            uint[] pixels = new uint[Width * Height];
            uint[] unprocessedPixels = new uint[Width * Height];
            byte[] displayBitmapBytes = new byte[Width * Height];
            byte[] rawBitmapBytes = new byte[(Width * Height * 3) + 40 + 14 + 1];

            var frameInfo = new SerNativeFrameInfo();

            TangraCore.SERGetFrame(index, pixels, unprocessedPixels, rawBitmapBytes, displayBitmapBytes, (ushort)BitPix, ref frameInfo);

            m_CurrentFrameInfo = new SerFrameInfo(frameInfo);

            using (var memStr = new MemoryStream(rawBitmapBytes))
            {
                Bitmap displayBitmap;

                try
                {
                    displayBitmap = (Bitmap)Bitmap.FromStream(memStr);
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex.GetFullStackTrace());
                    displayBitmap = new Bitmap(Width, Height);
                }

                var rv = new Pixelmap(Width, Height, BitPix, pixels, displayBitmap, displayBitmapBytes);
                rv.UnprocessedPixels = unprocessedPixels;
                rv.FrameState = new FrameStateData()
                {
                    SystemTime = m_CurrentFrameInfo.TimeStampUtc
                };

                if (UseTimeStamp != SerUseTimeStamp.None)
                {
                    if (UseTimeStamp == SerUseTimeStamp.FireCaptureLog)
                    {
                        DateTime dt;
                        if (m_FireCaptureTimeStamps.TryGetValue(1 + index, out dt))
                            rv.FrameState.CentralExposureTime = dt;
                    }
                    else if (UseTimeStamp == SerUseTimeStamp.SerEmbeddedUtcTime)
                    {
                        rv.FrameState.CentralExposureTime = m_CurrentFrameInfo.TimeStampUtc;
                    }
                }

                return rv;
            }
        }
Exemplo n.º 8
0
        public Pixelmap GetIntegratedFrame(int startFrameNo, int framesToIntegrate, bool isSlidingIntegration, bool isMedianAveraging)
        {
            if (startFrameNo < FirstFrame || startFrameNo > LastFrame)
                throw new ApplicationException("Invalid frame position: " + startFrameNo);

            int actualFramesToIntegrate = Math.Min(startFrameNo + framesToIntegrate, LastFrame - 1) - startFrameNo;

            uint[] pixels = new uint[Width * Height];
            uint[] unprocessedPixels = new uint[Width * Height];
            byte[] displayBitmapBytes = new byte[Width * Height];
            byte[] rawBitmapBytes = new byte[(Width * Height * 3) + 40 + 14 + 1];
            var frameInfo = new SerNativeFrameInfo();

            TangraCore.SERGetIntegratedFrame(startFrameNo, actualFramesToIntegrate, isSlidingIntegration, isMedianAveraging, pixels, unprocessedPixels, rawBitmapBytes, displayBitmapBytes, (ushort)BitPix, ref frameInfo);

            m_CurrentFrameInfo = new SerFrameInfo(frameInfo);

            using (var memStr = new MemoryStream(rawBitmapBytes))
            {
                Bitmap displayBitmap = (Bitmap)Bitmap.FromStream(memStr);

                var rv = new Pixelmap(Width, Height, BitPix, pixels, displayBitmap, displayBitmapBytes);
                rv.UnprocessedPixels = unprocessedPixels;
                rv.FrameState = new FrameStateData()
                {
                    SystemTime = m_CurrentFrameInfo.TimeStampUtc
                };

                if (UseTimeStamp != SerUseTimeStamp.None)
                {
                    if (UseTimeStamp == SerUseTimeStamp.FireCaptureLog)
                    {
                        DateTime dt, dt2;
                        if (actualFramesToIntegrate % 2 == 0 && actualFramesToIntegrate > 1)
                        {
                            if (
                                m_FireCaptureTimeStamps.TryGetValue(startFrameNo + actualFramesToIntegrate/2, out dt) &&
                                m_FireCaptureTimeStamps.TryGetValue(1 + startFrameNo + actualFramesToIntegrate/2, out dt2))
                            {
                                rv.FrameState.CentralExposureTime = dt.AddTicks((dt2 - dt).Ticks/2);
                            }
                        }
                        else
                        {
                            if (m_FireCaptureTimeStamps.TryGetValue(1 + startFrameNo + actualFramesToIntegrate / 2, out dt))
                                rv.FrameState.CentralExposureTime = dt;
                        }
                    }
                    else if (UseTimeStamp == SerUseTimeStamp.SerEmbeddedUtcTime)
                    {
                        rv.FrameState.CentralExposureTime = m_CurrentFrameInfo.TimeStampUtc;
                    }
                }

                return rv;
            }
        }