/// <summary>
        /// 添加相机
        /// </summary>
        /// <param name="cameraSerial">相机序列号</param>
        /// <exception cref="InvalidOperationException">
        /// 打开相机失败
        /// </exception>
        public static void AddCamera(string cameraSerial)
        {
            //校验相机SDK是否有效
            if (!CameraAssemblys.ContainsKey(DefaultCameraSdkType))
            {
                throw new ArgumentException("ECameraSdkType invalid");
            }

            if (string.IsNullOrEmpty(cameraSerial))
            {
                throw new ArgumentException("cameraSerial cannot be null");
            }

            //如果当前相机已经注册了,则直接返回
            if (Cameras.ContainsKey(cameraSerial))
            {
                return;
            }

            ICamera camera = CreateInstance(DefaultCameraSdkType);

            if (camera.Connect(cameraSerial))
            {
                Cameras.Add(cameraSerial, camera);
                SetToDefaultConfiguration(camera);
                return;
            }
            else
            {
                throw new InvalidOperationException($"open camera[{cameraSerial}] err!");
            }
        }
Beispiel #2
0
        private void StartCamera(Camera cam)
        {
            SynchronizationContext context = SynchronizationContext.Current;

            ICamera Icam = null;

            if (string.IsNullOrEmpty(Program.directory))
            {
                var camera = new SanyoNetCamera();
                camera.IPAddress = cam.IpAddress;
                camera.UserName  = "******";
                camera.Password  = "******";

                Icam = camera;
                this.StartRecord(cam);
            }
            else
            {
                MockCamera mc = new MockCamera(Program.directory);
                mc.Repeat = true;
                Icam      = mc;
            }


            if (presenter == null)
            {
                presenter = new Presenter(this, Icam);
            }

            System.Threading.ThreadPool.QueueUserWorkItem((object o) =>
            {
                System.Exception error = null;
                try
                {
                    Icam.Connect();
                }
                catch (System.Net.Sockets.SocketException ex)
                {
                    error = ex;
                }
                catch (System.Net.WebException ex)
                {
                    error = ex;
                }

                context.Post(OnConnectionFinished, error);

                if (error == null)
                {
                    Properties.Settings.Default.LastSelCamID = cam.ID;
                }
            });
        }