123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- using System;
- using System.Runtime.InteropServices;
- using TUCAMAPI;
- namespace TUCamera
- {
- public class TUCameraDrawMax : TUCameraIFrameProcess
- {
- private TUCamera m_camera;
- private FrameProcesserState m_state = FrameProcesserState.STOP;
- private byte[] pBuf = null;
- private object lockObj = new object();
- public TUCameraDrawMax(TUCamera camera)
- {
- m_camera = camera;
- }
- public void DoProcess(ref TUCAM_FRAME frame)
- {
- if (m_state != FrameProcesserState.PLAY)
- {
- return;
- }
- int nSize = (int)(frame.uiImgSize + frame.usHeader);
- if (pBuf == null || pBuf.Length != nSize)
- {
- pBuf = new byte[nSize];
- }
- Marshal.Copy(frame.pBuffer, pBuf, 0, nSize);
- Buffer.BlockCopy(pBuf, (int)(frame.usHeader), pBuf, 0, (int)(frame.uiImgSize));
- Pause();
- //Console.WriteLine("返回全图buf");
- m_camera.CallbackDrawAll(pBuf, lockObj, frame.ucChannels);
- //Console.WriteLine("返回全图buf结束");
- }
- private int m_roiX = 0;
- private int m_roiY = 0;
- private int m_roiWidth = 0;
- private int m_roiHeight = 0;
- private int m_resolutionW = 0;
- private int m_resolutionH = 0;
- public void Start()
- {
- Console.WriteLine("获取当前ROI保存");
- m_camera.GetROI(ref m_roiX, ref m_roiY, ref m_roiWidth, ref m_roiHeight);
- Console.WriteLine("设置最大ROI------开始");
- m_camera.SetROIFull(ref m_resolutionW, ref m_resolutionH);
- Console.WriteLine("设置最大ROI------结束");
- m_state = FrameProcesserState.PLAY;
- }
- public int GetResolutionW()
- {
- return m_resolutionW;
- }
- public int GetResolutionH()
- {
- return m_resolutionH;
- }
- public void Stop()
- {
- if (m_state != FrameProcesserState.STOP)
- {
- Console.WriteLine("抓取全图------结束");
- Console.WriteLine("恢复原ROI-----开始");
- m_camera.SetROI(ref m_roiX, ref m_roiY, ref m_roiWidth, ref m_roiHeight);
- Console.WriteLine("恢复原ROI-----结束");
- m_state = FrameProcesserState.STOP;
- }
- }
- public void Pause()
- {
- m_state = FrameProcesserState.PAUSE;
- }
- public void Resume()
- {
- m_state = FrameProcesserState.PLAY;
- }
- public FrameProcesserState GetStatus()
- {
- return m_state;
- }
- }
- }
|