/// <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!"); } }
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; } }); }