MyCamera.cs 2.6 KB
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace OnlineStore.DeviceLibrary
{
    public class MyCamera
    {
 
        static Asa.Camera.VisionLib camera;
        static bool loadCameraState = false;
        static List<string> cameraList = new List<string>(); 
        public static void LoadCameraConfig()
        {
            if (loadCameraState)
                return;
            string path = @".\Config\Camera.json";
            if (!File.Exists(path))
            {
                LogUtil.error("找不到监控相机配置文件" + path);
            }
            camera = new Asa.Camera.VisionLib(path);
 
            loadCameraState = true;
        }
        public static void StartCamera(string cameraName)
        {
            if (cameraList.Contains(cameraName))
            {
                CloseCamera(cameraName);
            }
            camera.Open(cameraName);
            cameraList.Add(cameraName);
        }

        //  void startMonitor(object obj)
        //{
        //    if (!loadCameraState)
        //    {
        //        LogUtil.error(cameraName + "监控相机初始化失败,无法开启");
        //        return;
        //    }
        //    string name = (string)obj;
        //    while (IsOpen)
        //    {
        //        Bitmap bmp = AcqImage(name);
        //        if (bmp != null)
        //        {
        //            camera_event?.Invoke(new CameraArgs(name, bmp));
        //        } 
        //        Thread.Sleep(300);
        //    }
        //}
        public static void CloseCamera(string cameraName)
        {
            camera.Close(cameraName);
            cameraList.Remove(cameraName);
        }
        public static Bitmap AcqImage(string camName)
        {
            if (!cameraList.Contains(camName))
            {
                StartCamera(camName);
            }
            Bitmap bitmap = camera.GetImage(camName);
            return bitmap;
        }

        public static void DisposeCamera()
        {
            camera.Close();
            camera.Dispose();
        }

    }
    public class CameraArgs : EventArgs
    {
        /// <summary>
        /// 相机名
        /// </summary>
        public string CamName { get; set; }
        /// <summary>
        /// 相机采集的图片
        /// </summary>
        public Bitmap Image { get; set; }
        public CameraArgs(string name, Bitmap img)
        {
            CamName = name;
            Image = img;
        }
    }
}