示例#1
0
		public static FileViewModel FromFile(string fileName)
		{
			var hexFileInfo = new HEXFileInfo()
			{
				HexMemoryType = HexMemoryType.Controller_AVR,
				FileName = new FileInfo(fileName).Name,
				Lines = File.ReadAllLines(fileName).ToList()
			};
			var fileViewModel = new FileViewModel(hexFileInfo, true);
			return fileViewModel;
			//var hexInfo = FirmwareUpdateOperationHelper.GetHexInfo(fileName);
		}
示例#2
0
		void OnSaveFile()
		{
			var saveDialog = new SaveFileDialog()
			{
				Filter = "Пакет обновления (*.FSCS)|*.FSCS",
				DefaultExt = "Пакет обновления (*.FSCS)|*.FSCS"
			};
			if (saveDialog.ShowDialog().Value)
			{
				if (File.Exists(saveDialog.FileName))
					File.Delete(saveDialog.FileName);

				var hexFileCollectionInfo = new HexFileCollectionInfo()
				{
					DriverType = SelectedDriver,
					Name = Name,
					MinorVersion = MinorVersion,
					MajorVersion = MajorVersion,
					AutorName = AutorName
				};
				foreach (var file in Files)
				{
					var hexFileInfo = new HEXFileInfo()
					{
						HexMemoryType = file.SelectedHexMemoryType,
						FileName = file.FileName
					};
					foreach (var lineViewModel in file.Lines)
					{
						hexFileInfo.Lines.Add(lineViewModel.OriginalContent);
					}
					hexFileCollectionInfo.FileInfos.Add(hexFileInfo);
				}
				HXCFileInfoHelper.Save(saveDialog.FileName, hexFileCollectionInfo);
			}
		}
示例#3
0
		public FileViewModel(HEXFileInfo hexFileInfo, bool isNew)
		{
			HexMemoryTypes = Enum.GetValues(typeof(HexMemoryType)).Cast<HexMemoryType>().ToList();

			Error = "";
			FileName = hexFileInfo.FileName;
			SelectedHexMemoryType = hexFileInfo.HexMemoryType;
			Lines = new List<LineViewModel>();
			foreach (var line in hexFileInfo.Lines)
			{
				var lineViewModel = new LineViewModel(line);
				Lines.Add(lineViewModel);
			}

			var preLastLine = hexFileInfo.Lines[hexFileInfo.Lines.Count - 3];
			CRC = preLastLine.Substring(39, 2) + preLastLine.Substring(37, 2);
			var minorVersion = Convert.ToInt32(preLastLine.Substring(35, 2), 16);
			var majorVersion = Convert.ToInt32(preLastLine.Substring(33, 2), 16);
			Version = minorVersion.ToString() + "." + majorVersion.ToString();

			var firstOffset = Convert.ToInt32(Lines[1].StringOffset, 16);
			var lastOffset = firstOffset;
			var baseOffset = 0;
			for (int i = 1; i < Lines.Count - 2; i++)
			{
				var currentLine = Lines[i];
				if (currentLine.StringLineType == "00")
				{
					lastOffset = Convert.ToInt32(Lines[i].StringOffset, 16);
				}
				if (currentLine.StringLineType == "04")
				{
					baseOffset = Convert.ToInt32(Lines[i].Content, 16);
				}
			}
			lastOffset = baseOffset * 0x10000 + lastOffset + 0x0F;
			AddressRange = firstOffset.ToString("X8") + " - " + lastOffset.ToString("X8");

			if (isNew)
			{
				var memoryType = preLastLine.Substring(31, 2);
				switch (memoryType)
				{
					case "95":
						SelectedHexMemoryType = HexMemoryType.Controller_AVR;
						break;
					case "BB":
						SelectedHexMemoryType = HexMemoryType.RAM_RS485;
						break;
					case "CC":
						SelectedHexMemoryType = HexMemoryType.RAM_USB;
						break;
					case "AA":
						SelectedHexMemoryType = HexMemoryType.ROM;
						break;
					case "FF":
						SelectedHexMemoryType = HexMemoryType.User_ARM;
						break;
					default:
						Error += "Неизвестный тип памяти" + "\n";
						break;
				}
			}
		}