123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- using System;
- using System.Collections.Generic;
- using TUCAMAPI;
- namespace TUCamera
- {
- class TUCameraImageSaveFastSpeed : TUCameraIFrameProcess
- {
- private TUCamera m_camera;
- private FrameProcesserState m_state = FrameProcesserState.STOP;
- private DateTimeTools m_tools = null;
- private Int64 m_duration = 0;
- private string m_savePath;
- private string m_imagePrefix;
- private TUIMG_FORMATS m_imageFormat;
- public List<string> m_imgList = new List<string>();
- /// <summary>
- /// 最大速度持续一段时间拍摄
- /// </summary>
- /// <param name="savePath">文件保存路径</param>
- /// <param name="imagePrefix">文件名前缀</param>
- /// <param name="imageFormat">文件保存格式</param>
- /// <param name="duration">持续拍摄时间</param>
- public TUCameraImageSaveFastSpeed(TUCamera camera, string savePath, string imagePrefix, TUIMG_FORMATS imageFormat, Int64 duration)
- {
- m_camera = camera;
- m_savePath = savePath;
- m_imagePrefix = imagePrefix;
- m_imageFormat = imageFormat;
- m_duration = duration;
- m_tools = new DateTimeTools((UInt64)duration);
- if (!System.IO.Directory.Exists(m_savePath))
- {
- System.IO.Directory.CreateDirectory(m_savePath);//不存在就创建目录
- }
- }
- public void DoProcess(ref TUCAM_FRAME frame)
- {
- if (m_state != FrameProcesserState.PLAY)
- {
- return;
- }
- // 持续一直拍摄
- if (m_duration < 0)
- {
- string fileName = CreatFileName();
- bool result = m_camera.SaveImage(ref frame, fileName, m_imageFormat);
- if (result)
- {
- m_imgList.Add(creatImageName(fileName, m_imageFormat));
- }
- return;
- }
- // 持续固定的一段时间拍摄
- if (m_tools.Timeout())
- {
- Stop();
- }
- else
- {
- string fileName = CreatFileName();
- bool result = m_camera.SaveImage(ref frame, fileName, m_imageFormat);
- if (result)
- {
- m_imgList.Add(creatImageName(fileName, m_imageFormat));
- }
- }
- }
- private string CreatFileName()
- {
- DateTime now = DateTime.Now;
- return m_savePath + "\\" + m_imagePrefix + now.ToString("yyyyMMddHHmmssfff");
- }
- private string creatImageName(string fileName, TUIMG_FORMATS imageFormat)
- {
- // string fileName = fileName;
- switch (imageFormat)
- {
- case TUIMG_FORMATS.TUFMT_PNG:
- fileName = fileName + ".png";
- break;
- case TUIMG_FORMATS.TUFMT_BMP:
- fileName = fileName + ".bmp";
- break;
- case TUIMG_FORMATS.TUFMT_TIF:
- fileName = fileName + ".tif";
- break;
- default:
- fileName = fileName + ".jpg";
- break;
- }
- return fileName;
- }
- public void Stop()
- {
- if (m_state != FrameProcesserState.STOP)
- {
- m_state = FrameProcesserState.STOP;
- m_camera.CallbackImageSave(this, true, m_imgList);
- }
- }
- public void Start()
- {
- m_state = FrameProcesserState.PLAY;
- }
- public void Pause()
- {
- m_state = FrameProcesserState.PAUSE;
- }
- public void Resume()
- {
- m_state = FrameProcesserState.PLAY;
- }
- public FrameProcesserState GetStatus()
- {
- return m_state;
- }
- }
- }
|