/// <summary> /// 重连设备 /// </summary> /// <param name="IUserId"></param> /// <returns></returns> public int DeviceReconnect(int IUserId) { SDKPlugInData.DEVICEINFO deviceinfo = new SDKPlugInData.DEVICEINFO(); ILoginData loginData = loginDataList.FindByLoginDataHandle(IUserId); uint lastLoginHandle = 0; if (loginData != null) { lastLoginHandle = loginData.LoginHandle; int loginHandle = DeviceLogin(loginData.DeviceIP, loginData.DevicePort, loginData.UserName, loginData.Password, ref deviceinfo, loginData.servername); if (loginHandle != -1) { //DeviceLogout(IUserId); RealHandleDataList rlist = new RealHandleDataList(); //查找 foreach (IRealHandleData realHandleData in realHandleDataList) { if (realHandleData.LoginHandle == loginData.LoginDataHandle) { rlist.Add(realHandleData); } } //重播 if (rlist.Count != 0) { foreach (IRealHandleData realHandleData in rlist) { if (!lastRealPlayHandleHT.Contains(realHandleData.WndHandle)) { lastRealPlayHandleHT.Add(realHandleData.WndHandle, realHandleData.RealPlayHandle); } else { lastRealPlayHandleHT[realHandleData.WndHandle] = realHandleData.RealPlayHandle; } if (realHandleData.WndHandle != IntPtr.Zero) { //lastRealPlayHandle = realHandleData.RealPlayHandle; if (RealPlay(loginHandle, realHandleData.ChannelNo, realHandleData.WndHandle) == -1) { DeviceLogout(Convert.ToInt32(loginData.LoginHandle)); loginData.LoginHandle = lastLoginHandle; //Console.WriteLine(string.Format("不成功 {0} data{1} handle {2} ", loginData.DeviceIP, loginData.LoginDataHandle, loginData.LoginHandle)); TraceDbg(string.Format("不成功 {0} data{1} handle {2} ", loginData.DeviceIP, loginData.LoginDataHandle, loginData.LoginHandle)); return -1; } else { StopRealPlay(realHandleData.RealPlayHandle); } } else { int ral = SaveNoRealData(loginHandle, realHandleData.ChannelNo, string.Format(@"c:\temp{0}{1}.mpp",loginHandle,realHandleData.ChannelNo)); if (ral != -1) { bool b = StopSaveNoRealData(ral); //Console.WriteLine("停止temp " + b.ToString()); TraceDbg("停止temp " + b.ToString()); } else { DeviceLogout(Convert.ToInt32(loginData.LoginHandle)); loginData.LoginHandle = lastLoginHandle; //Console.WriteLine(string.Format("不成功 {0} data{1} handle {2} ", loginData.DeviceIP, loginData.LoginDataHandle, loginData.LoginHandle)); TraceDbg(string.Format("不成功 {0} data{1} handle {2} ", loginData.DeviceIP, loginData.LoginDataHandle, loginData.LoginHandle)); return -1; } } } } DeviceLogout(Convert.ToInt32(lastLoginHandle)); return loginHandle; } else { return -1; } } else { return -1; } }
/// <summary> /// ע���豸 /// </summary> /// <param name="device">�豸</param> private void LoginDevice(IDevice device, bool IsReconnect) { TwoEventArgs args = new TwoEventArgs(); args.Obj1 = device; if (device.PTLSN == -1) // �ò�����������ͼƬ��Ϊ�����ʾ { //TODO:���豸û�������������ҵ����ʵ��������� //SetDeviceErr(device, true); device.IsInWorking = false; args.Obj2 = true; this.BeginInvoke(new EventHandler(SetDeviceErrUI), args); //device.DeviceHandle = -1; //dsi.UserID = -1; SetDevieHandle(device, -1); } else { if (!Convert.ToBoolean(device.DeviceWorkState)) // �豸���� { if (sdklibrarys[device.PTLSN].Enable) // �������������� { SDKPlugInData.DEVICEINFO info = new SDKPlugInData.DEVICEINFO(); int userID = -1; if (IsReconnect) { userID = sdklibrarys[device.PTLSN].DeviceReconnect(device.DeviceHandle); } else { userID = sdklibrarys[device.PTLSN].DeviceLogin(device.DeviceIP, (ushort)device.DevicePort, device.DeviceUserName, device.DevicePWD, ref info, device.DeviceName); } SetDevieHandle(device, userID); //device.DeviceHandle = //dsi.UserID = device.DeviceHandle; if (device.DeviceHandle != -1) { //���� sdklibrarys[device.PTLSN].SetupAlarmChan(device.DeviceHandle, device.DeviceID); } if (device.DeviceHandle == -1) { //TODO:���豸ע��ʧ�� device.IsInWorking = false; args.Obj2 = true; this.BeginInvoke(new EventHandler(SetDeviceErrUI), args); } else { //ע��ɹ� device.IsInWorking = true; args.Obj2 = false; this.BeginInvoke(new EventHandler(SetDeviceErrUI), args); } } else { //TODO:���豸�����Ѿ���ͣ�� device.IsInWorking = false; args.Obj2 = true; this.BeginInvoke(new EventHandler(SetDeviceErrUI), args); } } else { //TODO:�豸������ device.IsInWorking = false; args.Obj2 = true; this.BeginInvoke(new EventHandler(SetDeviceErrUI), args); } } }