示例#1
0
        /// <summary>
        /// 更新集合
        /// </summary>
        public static void UpdateAssembly()
        {
            VisionFrameAssemblys.Clear();

            //遍历目录
            if (Directory.Exists(VisionFrameDllRootPath))
            {
                var directoryInfo = new DirectoryInfo(VisionFrameDllRootPath);

                foreach (var item in directoryInfo.GetDirectories())
                {
                    //获取集合
                    var dllPath = $"{VisionFrameDllRootPath}/{item.Name}/{item.Name}.dll";

                    if (File.Exists(dllPath))
                    {
                        var assembly = Assembly.LoadFrom(dllPath);

                        EVisionFrameType visionFrameType = ConvertToEVisionFrameType(item.Name);
                        if (visionFrameType == EVisionFrameType.Unknown)
                        {
                            continue;
                        }

                        //将dll添加到集合字典中
                        VisionFrameAssemblys.Add(visionFrameType, assembly);
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// 创建视觉框架实例
        /// </summary>
        /// <param name="visionFrameType">视觉框架类型</param>
        /// <returns>视觉框架实例</returns>
        public static IVisionFrame CreateInstance(EVisionFrameType visionFrameType)
        {
            try
            {
                if (VisionFrameAssemblys.ContainsKey(visionFrameType))
                {
                    //创建视觉框架实例
                    foreach (var item in VisionFrameAssemblys[visionFrameType].ExportedTypes)
                    {
                        if (item.Name == "VisionFrame")
                        {
                            object obj = VisionFrameAssemblys[visionFrameType].CreateInstance(item.FullName);

                            if (obj is IVisionFrame)
                            {
                                return(obj as IVisionFrame);
                            }
                        }
                    }
                }

                throw new FileNotFoundException($"{nameof(visionFrameType)} is not found");
            }
            catch (Exception)
            {
                throw;
            }
        }
        /// <summary>
        /// 创建Scene新实例
        /// </summary>
        /// <param name="sceneName">场景名</param>
        /// <param name="eVisionFrame">视觉框架枚举</param>
        /// <param name="visionOperaFile">算子文件路径</param>
        public Scene(string sceneName, EVisionFrameType eVisionFrame, string visionOperaFile) : this(sceneName, eVisionFrame)
        {
            if (VisionFrame == null)
            {
                throw new ArgumentException("VisionFrame cannot be null");
            }

            if (string.IsNullOrEmpty(visionOperaFile) || !File.Exists(visionOperaFile))
            {
                throw new FileNotFoundException("visionOperaFile invalid");
            }

            //还原视觉算子
            SetVisionOperaFile(visionOperaFile);
        }
        /// <summary>
        /// 创建Scene新实例
        /// </summary>
        /// <param name="sceneName">场景名</param>
        /// <param name="eVisionFrame">视觉框架枚举</param>
        /// <param name="visionOperaFile">算子文件路径</param>
        /// <param name="cameraSerial">相机序列号</param>
        public Scene(string sceneName, EVisionFrameType eVisionFrame, string visionOperaFile, string cameraSerial) : this(sceneName, eVisionFrame, visionOperaFile)
        {
            if (VisionFrame.IsEnableCamera)
            {
                CameraSerial = cameraSerial;

                //若相机无效,则不报异常
                try
                {
                    SetCamera(cameraSerial);
                }
                catch (InvalidOperationException)
                {
                    //若打开相机失败,不抛异常
                }
            }
        }
 /// <summary>
 /// 创建Scene新实例
 /// </summary>
 /// <param name="sceneName">场景名</param>
 /// <param name="eVisionFrame">视觉框架枚举</param>
 public Scene(string sceneName, EVisionFrameType eVisionFrame) : this(sceneName)
 {
     EVisionFrameType = eVisionFrame;
     VisionFrame      = VisionFrameFactory.CreateInstance(eVisionFrame);
 }