コード例 #1
0
		public void WriteFileToGK(XDevice gkDevice)
		{
			var bytesList = new List<byte>();
			var gkFileInfo = new GKFileInfo();
			gkFileInfo.Initialize(XManager.DeviceConfiguration, gkDevice);
			bytesList.AddRange(gkFileInfo.InfoBlock);
			var sendResult = SendManager.Send(gkDevice, 0, 21, 0);
			if (sendResult.HasError)
				{ Error = "Невозможно начать процедуру записи "; return; }
            bytesList.AddRange(gkFileInfo.FileBytes);
			var progressCallback = GKProcessorManager.StartProgress("Запись файла в " + gkDevice.PresentationName, null, bytesList.Count / 256, true, GKProgressClientType.Administrator);
			for (var i = 0; i < bytesList.Count; i += 256)
			{
				if (progressCallback.IsCanceled)
					{ Error = "Операция отменена"; return; }
				GKProcessorManager.DoProgress("Запись блока данных " + i + 1, progressCallback);
				var bytesBlock = BitConverter.GetBytes((uint)(i / 256 + 1)).ToList();
				bytesBlock.AddRange(bytesList.GetRange(i, Math.Min(256, bytesList.Count - i)));
				sendResult = SendManager.Send(gkDevice, (ushort)bytesBlock.Count(), 22, 0, bytesBlock);
				if (sendResult.HasError)
				{
					Error = "Невозможно записать блок данных " + i;
					break;
				}
			}
			var endBlock = BitConverter.GetBytes((uint) (bytesList.Count()/256 + 1)).ToList();
			sendResult = SendManager.Send(gkDevice, 0, 22, 0, endBlock);
			if (sendResult.HasError)
				{ Error = "Невозможно завершить запись файла "; }
		}
コード例 #2
0
ファイル: MailManager.cs プロジェクト: Zane0816/Mail-.Net
        private List<BsonDocument> SortMail(List<BsonDocument> MailList, BsonDocument Search)
        {
            List<BsonDocument> MailNikeName = nnm.GetAllData();
            List<BsonDocument> MailIp = im.GetAllData();
            List<BsonDocument> MailAddress = mam.GetAllData();
            List<BsonDocument> MailPhone = pm.GetAllData();
            List<BsonDocument> MailContainer = cm.GetAllData();
            foreach (BsonDocument Mail in MailList)
            {
                int Weights = 0;
                if (Mail.Contains("MailFrom"))
                {
                    foreach (BsonValue MailFrom in Mail.GetValue("MailFrom").AsBsonArray)
                    {
                        if (!MailFrom.AsBsonArray[0].IsBsonNull)
                        {
                            Weights += MailNikeName.Find((x) => x.GetValue("_id").AsObjectId == MailFrom.AsBsonArray[0].AsObjectId).GetValue("RepeatTimes").AsInt32;
                        }
                        if (!MailFrom.AsBsonArray[1].IsBsonNull)
                        {
                            Weights += MailAddress.Find((x) => x.GetValue("_id").AsObjectId == MailFrom.AsBsonArray[1].AsObjectId).GetValue("RepeatTimes").AsInt32;
                        }
                    }
                }
                if (Mail.Contains("MailTO"))
                {
                    foreach (BsonValue MailTO in Mail.GetValue("MailTO").AsBsonArray)
                    {
                        if (!MailTO.AsBsonArray[0].IsBsonNull)
                        {
                            Weights += MailNikeName.Find((x) => x.GetValue("_id").AsObjectId == MailTO.AsBsonArray[0].AsObjectId).GetValue("RepeatTimes").AsInt32;
                        }
                        if (!MailTO.AsBsonArray[1].IsBsonNull)
                        {
                            Weights += MailAddress.Find((x) => x.GetValue("_id").AsObjectId == MailTO.AsBsonArray[1].AsObjectId).GetValue("RepeatTimes").AsInt32;
                        }
                    }
                }
                if (Mail.Contains("MailCC"))
                {
                    foreach (BsonValue MailCC in Mail.GetValue("MailCC").AsBsonArray)
                    {
                        if (!MailCC.AsBsonArray[0].IsBsonNull)
                        {
                            Weights += MailNikeName.Find((x) => x.GetValue("_id").AsObjectId == MailCC.AsBsonArray[0].AsObjectId).GetValue("RepeatTimes").AsInt32;
                        }
                        if (!MailCC.AsBsonArray[1].IsBsonNull)
                        {
                            Weights += MailAddress.Find((x) => x.GetValue("_id").AsObjectId == MailCC.AsBsonArray[1].AsObjectId).GetValue("RepeatTimes").AsInt32;
                        }
                    }
                }
                if (Mail.Contains("MailBCC"))
                {
                    foreach (BsonValue MailBCC in Mail.GetValue("MailBCC").AsBsonArray)
                    {
                        if (!MailBCC.AsBsonArray[0].IsBsonNull)
                        {
                            Weights += MailAddress.Find((x) => x.GetValue("_id").AsObjectId == MailBCC.AsBsonArray[0].AsObjectId).GetValue("RepeatTimes").AsInt32;
                        }
                        if (!MailBCC.AsBsonArray[1].IsBsonNull)
                        {
                            Weights += MailAddress.Find((x) => x.GetValue("_id").AsObjectId == MailBCC.AsBsonArray[1].AsObjectId).GetValue("RepeatTimes").AsInt32;
                        }
                    }
                }
                for (int i = 0; i < Mail.GetValue("HTMLBodyIps").AsBsonArray.Count; i += 2)
                {
                    Weights += MailIp.Find((x) => x.GetValue("Ip") == Mail.GetValue("HTMLBodyIps").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("HTMLBodyIps").AsBsonArray[i + 1].AsInt32;
                }
                for (int i = 0; i < Mail.GetValue("HTMLBodyMailAddress").AsBsonArray.Count; i += 2)
                {
                    Weights += MailAddress.Find((x) => x.GetValue("Address").AsString == Mail.GetValue("HTMLBodyMailAddress").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("HTMLBodyMailAddress").AsBsonArray[i + 1].AsInt32;
                }
                for (int i = 0; i < Mail.GetValue("HTMLBodyPhone").AsBsonArray.Count; i += 2)
                {
                    Weights += MailPhone.Find((x) => x.GetValue("Phone") == Mail.GetValue("HTMLBodyPhone").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("HTMLBodyPhone").AsBsonArray[i + 1].AsInt32;
                }
                for (int i = 0; i < Mail.GetValue("HTMLBodyContainer").AsBsonArray.Count; i += 2)
                {
                    Weights += MailContainer.Find((x) => x.GetValue("Container") == Mail.GetValue("HTMLBodyContainer").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("HTMLBodyContainer").AsBsonArray[i + 1].AsInt32;
                }
                for (int i = 0; i < Mail.GetValue("TextBodyIps").AsBsonArray.Count; i += 2)
                {
                    Weights += MailIp.Find((x) => x.GetValue("Ip") == Mail.GetValue("TextBodyIps").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("TextBodyIps").AsBsonArray[i + 1].AsInt32;
                }
                for (int i = 0; i < Mail.GetValue("TextBodyMailAddress").AsBsonArray.Count; i += 2)
                {
                    Weights += MailAddress.Find((x) => x.GetValue("Address").AsString == Mail.GetValue("TextBodyMailAddress").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("TextBodyMailAddress").AsBsonArray[i + 1].AsInt32;
                }
                for (int i = 0; i < Mail.GetValue("TextBodyPhone").AsBsonArray.Count; i += 2)
                {
                    Weights += MailPhone.Find((x) => x.GetValue("Phone") == Mail.GetValue("TextBodyPhone").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("TextBodyPhone").AsBsonArray[i + 1].AsInt32;
                }
                for (int i = 0; i < Mail.GetValue("TextBodyContainer").AsBsonArray.Count; i += 2)
                {
                    Weights += MailContainer.Find((x) => x.GetValue("Container") == Mail.GetValue("TextBodyContainer").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("TextBodyContainer").AsBsonArray[i + 1].AsInt32;
                }
                Mail.Add("Weights", Weights);
            }
            MailList.Sort((X, Y) => -X.GetValue("Weights").AsInt32.CompareTo(Y.GetValue("Weights").AsInt32));
            if (MailList.Count > 1000)
            {
                return MailList.GetRange(0, 1000);
            }
            else
            {
                return MailList;
            }

        }
コード例 #3
0
ファイル: GKFileReaderWriter.cs プロジェクト: xbadcode/Rubezh
		public void WriteFileToGK(GKDevice gkControllerDevice, Guid clientUID)
		{
			using (var gkLifecycleManager = new GKLifecycleManager(gkControllerDevice, "Запись файла в ГК"))
			{
				gkLifecycleManager.AddItem("Формирование хэша");
				var gkFileInfo = new GKFileInfo();
				gkFileInfo.Initialize(gkControllerDevice);
				var bytesList = new List<byte>();
				bytesList.AddRange(gkFileInfo.InfoBlock);
				bytesList.AddRange(gkFileInfo.FileBytes);

				gkLifecycleManager.AddItem("Перевод в режим записи файла");
				var sendResult = SendManager.Send(gkControllerDevice, 0, 21, 0);
				if (sendResult.HasError)
				{
					Error = "Невозможно начать процедуру записи ";
					gkLifecycleManager.AddItem("Ошибка");
					return;
				}

				var progressCallback = GKProcessorManager.StartProgress("Запись файла в " + gkControllerDevice.PresentationName, null, bytesList.Count / 256, false, GKProgressClientType.Administrator, clientUID);
				for (var i = 0; i < bytesList.Count; i += 256)
				{
					gkLifecycleManager.Progress(i + 1, bytesList.Count);
					GKProcessorManager.DoProgress("Запись блока данных " + i + 1, progressCallback, clientUID);

					var bytesBlock = BitConverter.GetBytes((uint)(i / 256 + 1)).ToList();
					bytesBlock.AddRange(bytesList.GetRange(i, Math.Min(256, bytesList.Count - i)));
					for (int j = 0; j < 10; j++)
					{
						sendResult = SendManager.Send(gkControllerDevice, (ushort)bytesBlock.Count(), 22, 0, bytesBlock);
						var result = sendResult.Bytes.Count > 0 && sendResult.Bytes[0] == 1;
						if (!sendResult.HasError && result)
							break;
						if (j == 9)
						{
							Error = "Невозможно записать блок данных " + i;
							gkLifecycleManager.AddItem("Ошибка");
							return;
						}
					}
				}
				gkLifecycleManager.AddItem("Запись последнего блока данных");
				var endBlock = BitConverter.GetBytes((uint)(bytesList.Count() / 256 + 1)).ToList();
				sendResult = SendManager.Send(gkControllerDevice, 0, 22, 0, endBlock);
				var endResult = sendResult.Bytes.Count > 0 && sendResult.Bytes[0] == 0;
				if (sendResult.HasError || !endResult)
				{
					Error = "Невозможно завершить запись файла ";
					gkLifecycleManager.AddItem("Ошибка");
				}
				var sendResultRead = SendManager.Send(gkControllerDevice, 4, 23, 256, new List<byte>(BitConverter.GetBytes(1)));
				if (!gkFileInfo.InfoBlock.SequenceEqual(sendResultRead.Bytes))
				{
					Error = "Не удалось корректно записать информационный блок ";
					gkLifecycleManager.AddItem("Ошибка");
				}
			}
		}
コード例 #4
0
ファイル: JournalParser.cs プロジェクト: saeednazari/Rubezh
		public FS2JournalItem Parce(DeviceConfiguration deviceConfiguration, Device panelDevice, List<byte> bytes, int journalType)
		{
			if (bytes.Count != 32)
				return null;
			Bytes = bytes;
			DeviceConfiguration = deviceConfiguration;

			FSInternalJournal = new FSInternalJournal()
			{
				ShleifNo = bytes[17] + 1,
				EventCode = bytes[0],
				AdditionalEventCode = bytes[5],
				DeviceType = bytes[7],
				AddressOnShleif = bytes[8],
				State = bytes[9],
				UnusedDescriptorNo = BytesHelper.ExtractTriple(bytes, 12),
				ZoneNo = BytesHelper.ExtractShort(bytes, 10)
			};

			FS2JournalItem = new FS2JournalItem()
			{
				BytesString = BytesHelper.BytesToString(bytes),
				PanelDevice = panelDevice,
				PanelUID = panelDevice.UID,
				PanelName = panelDevice.DottedPresentationNameAndAddress,
				DeviceTime = TimeParceHelper.ParceDateTime(bytes.GetRange(1, 4)),
				SystemTime = DateTime.Now,
				EventCode = FSInternalJournal.EventCode,
				AdditionalEventCode = FSInternalJournal.AdditionalEventCode
			};
			switch (journalType)
			{
				case 0x00:
					FS2JournalItem.SubsystemType = SubsystemType.Fire;
					break;
				case 0x02:
					FS2JournalItem.SubsystemType = SubsystemType.Guard;
					break;
			}

			MetadataEvent = MetadataHelper.Metadata.events.FirstOrDefault(x => x.rawEventCode == "$" + FSInternalJournal.EventCode.ToString("X2"));

			if (MetadataHelper.HasDevise(FSInternalJournal.EventCode))
			{
				var intAddress = FSInternalJournal.AddressOnShleif + 256 * FSInternalJournal.ShleifNo;
				FS2JournalItem.Device = ConfigurationManager.Devices.FirstOrDefault(x => x.IntAddress == intAddress && x.ParentPanel == FS2JournalItem.PanelDevice && !x.Driver.IsGroupDevice);
				if (FS2JournalItem.Device != null)
				{
					FS2JournalItem.DeviceUID = FS2JournalItem.Device.UID;
					FS2JournalItem.DeviceName = FS2JournalItem.Device.PresentationName + " " + FS2JournalItem.Device.PresentationAddress;

					if (FSInternalJournal.DeviceType == 1)
						FS2JournalItem.DeviceName = "АСПТ " + (FSInternalJournal.ShleifNo - 1) + ".";
				}
				else
				{
					if (FSInternalJournal.DeviceType > 0)
					{
						var driverUID = MetadataHelper.GetUidById(FSInternalJournal.DeviceType);
						if (driverUID != Guid.Empty)
						{
							var driver = ConfigurationManager.Drivers.FirstOrDefault(x => x.UID == driverUID);
							FS2JournalItem.DeviceName = driver.ShortName + " " + FSInternalJournal.ShleifNo + "." + FSInternalJournal.AddressOnShleif;
						}
					}
				}
			}

			FS2JournalItem.HasZone = MetadataHelper.HasZone(FSInternalJournal.AdditionalEventCode);
			InitializeZone();
			FS2JournalItem.StateType = GetEventStateType();
			FS2JournalItem.Description = GetEventName();
			FS2JournalItem.Detalization = GetDetalization();
			FS2JournalItem.UserName = GetUserName();

			//Initialize_0x80_Event();
			if (FS2JournalItem.Description.Contains("Пожарная тревога"))
			{
				;
			}
			return FS2JournalItem;
		}