123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- using PaintDotNet.Base.CommTool;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using TUCAMAPI;
- namespace TUCamera
- {
- public class TUCameraManager
- {
- private TUCAM_INIT m_itApi; // SDK initialize environment object
- private List<TUCamera> m_cameraList; // The list of cameras object
- private TUCamera m_currentCamera;
- private static TUCameraManager m_cameraManager = null;
- private System.Timers.Timer _timerBreath;
- private TUCameraManager()
- {
- m_cameraList = new List<TUCamera>();
- }
- public static TUCameraManager GetInstance()
- {
- if (m_cameraManager == null)
- {
- m_cameraManager = new TUCameraManager();
- m_cameraManager.m_currentCamera = new TUCamera(0);
- m_cameraManager.InitManager(); //TODO: 开发阶段,自动初始化;产品阶段,需要寻找合适的初始化时机。
- }
- return m_cameraManager;
- }
- public void InitManager()
- {
- Logs.Write("InitManager");
- m_cameraList.Clear();
- InitCamThreadEntry();
- _timerBreath = new System.Timers.Timer();
- _timerBreath.Elapsed += (s, e) =>
- {
- try
- {
- var bitmap = m_currentCamera.OneShoot();
- bitmap?.Save(@"temp\d8214e60-68a9-479e-a777-d879835c69ea.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
- }
- catch { }
- };
- _timerBreath.Interval = 60000;
- _timerBreath.Start();
- }
- private void InitCamThreadEntry()
- {
- try
- {
- IntPtr strPath = Marshal.StringToHGlobalAnsi(System.Environment.CurrentDirectory);
- m_itApi.uiCamCount = 0;
- m_itApi.pstrConfigPath = strPath;
- TUCamAPI.TUCAM_Api_Init(ref m_itApi);
- for (uint i = 0; i < m_itApi.uiCamCount; ++i)
- {
- TUCamera camera = new TUCamera(i);
- camera.Open(); //TODO 开发阶段,默认打开;产品阶段,需要寻找合适的打开时机。
- //获取相机sn
- string cameraSn;
- string cameraName;
- camera.ReadRegisterData(out cameraSn);
- if (!string.IsNullOrEmpty(cameraSn))
- {
- if (FileOperationHelper.CheckCameraSNAndReturnName(Application.StartupPath + "\\array.dll", cameraSn, out cameraName))
- {
- camera.cameraName = cameraName == null ? "" : cameraName;
- m_cameraList.Add(camera);
- }
- }
- camera.Close();
- }
- //TODO 开发阶段,自动设定第一个相机为当前的相机
- if (m_cameraList.Count > 0)
- {
- SetCurrentCamera(0);
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.ToString());
- }
- }
- public void UnInitManager()
- {
- Logs.Write("UnInitManager");
- for (int i = 0; i < m_cameraList.Count; i++)
- {
- m_cameraList[i].Close();
- }
- m_cameraList.Clear();
- TUCamAPI.TUCAM_Api_Uninit();
- _timerBreath.Stop();
- try
- {
- System.IO.File.Delete(@"temp\d8214e60-68a9-479e-a777-d879835c69ea.jpg");
- }
- catch { }
- }
- /// <summary>
- /// 返回相机数量
- /// </summary>
- /// <returns></returns>
- public int CameraCount => m_cameraList.Count;
- /// <summary>
- /// 返回相机列表
- /// </summary>
- /// <returns></returns>
- public List<TUCamera> GetCameraList()
- {
- //UnInitManager();
- //InitManager();
- return m_cameraList;
- }
- /// <summary>
- /// 设置当前使用相机
- /// </summary>
- /// <param name="idx"></param>
- public void SetCurrentCamera(int idx)
- {
- if ((0 <= idx) && (idx < m_cameraList.Count))
- {
- m_currentCamera = m_cameraList[idx];
- m_currentCamera.Open();
- }
- }
- public TUCamera GetCurrentCamera()
- {
- return m_currentCamera;
- }
- }
- }
|