Camera.cs 4.3 KB
using CodeLibrary;
using DeviceLibrary;
using OnlineStore;
using OnlineStore.Common;
using OnlineStore.DeviceLibrary;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
public class HIKCamera
{
    public string Name = "";
    public event EventHandler<Bitmap> camera_event;
    public string DeviceName = "monitor1";
    public PictureBox picture = new PictureBox();
    //public bool LoadCameraConfig(out string msg, object preview = null)
    //{
    //    msg = "";
    //    if (!enableCamera) return true;
    //    string path = $".\\Config\\IPCamera.json";
    //    if (!File.Exists(path))
    //    {
    //        msg = crc.GetString(L.monitor_config_not_exist, "找不到监控相机配置文件");
    //        LogUtil.error("找不到监控相机配置文件" + path);
    //        return false;
    //    }
    //    try
    //    {
    //        if (!VideoManager.LoadCamera(path, out string loadmsg))
    //        {
    //            msg = loadmsg;
    //        }
    //    }
    //    catch (Exception e)
    //    {
    //        msg = crc.GetString(L.monitor_config_load_fail, "加载监控相机配置文件失败:") + e.ToString();
    //        LogUtil.error("加载监控相机配置文件失败:" + e.ToString());
    //        return false;
    //    }
    //    if (VideoManager.CamNames != null && VideoManager.CamNames.Count > 0)
    //    {
    //        Name = VideoManager.CamNames[0];
    //        if (preview == null)
    //        {
    //            VideoManager.Open(new Dictionary<string, IntPtr> { { Name, picture.Handle } });
    //        }
    //        else
    //        {
    //            VideoManager.Open(new Dictionary<string, IntPtr> { { Name, (IntPtr)preview } });
    //        }
    //        VideoManager.GrabOneImg(Name, out Bitmap bmp);
    //        if (bmp == null)
    //        {
    //            msg = Name + crc.GetString(L.monitor_open_fail, "监控相机打开失败");
    //            LogUtil.error(Name + $"监控相机打开失败");
    //            return false;
    //        }
    //        VideoManager.StartRecord(Name, "Auto1");
    //        camera_event?.Invoke(this, bmp);
    //        return true;
    //    }
    //    return false;
    //}
    int errortimes = 0;
    bool camerathreadrun = true;
    public void startCamera()
    {
        //if(!VideoManager.IsRecording(Name))
        //{
        //    VideoManager.StartRecord(Name, "Auto2");
        //}
    }
    public void stopCamera()
    {
        //VideoManager.StopRecord(Name);
        //VideoManager.Close();
        camerathreadrun = false;
    }
    public void CameraGrabOne(string filename)
    {
        //try
        //{
        //    LogUtil.info(Name + "库位文件名:" + filename);
        //    VideoManager.GrabOneImg(Name, out Bitmap bmp);
        //    if (bmp != null)
        //    {
        //        if (File.Exists(filename))
        //            File.Delete(filename);

        //        bmp.Save(filename, ImageFormat.Jpeg);
        //        bmp.Dispose();
        //    }
        //}
        //catch (Exception e)
        //{
        //    LogUtil.error(Name + e.ToString());
        //}
    }
    public string GetFixtureStateFilename(string PositionNum, string WareNumber, StoreMoveType storeMoveType, FixtureState fixtureState)
    {
        Path.GetInvalidFileNameChars().ToList().ForEach((ix) => { WareNumber = WareNumber.Replace(ix.ToString(), ""); });
        if (WareNumber.Length > 150)
        {
            WareNumber = "";
        }
        if (string.IsNullOrEmpty(WareNumber))
            WareNumber = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss");
        string dir = $"\\image\\Fixture\\{storeMoveType}\\{PositionNum}\\";
        Directory.CreateDirectory(dir);
        string filename = $"{WareNumber}@@{fixtureState}.jpg";
        foreach (var x in Path.GetInvalidFileNameChars())
        {
            filename = filename.Replace(x.ToString(), "");
        }
        return dir + filename;
    }

}
public enum FixtureState
{
    FromIn,
    FromOut,
    FromInSide,
    FromOutSide,
    ToIn,
    ToOut,
    ToInSide,
    ToOutSide,
    ToFix,
}