Esempio n. 1
0
		public static void SelOneFrame(Frame sender) {
			MWin win = MWin.I;
			if (win.ActFrm.Count == 1 && win.ActFrm[0] == sender)
				return;
			foreach (Frame frme in win.ActFrm)
				frme.IsSelected = false;
			win.ActFrm.Clear();
			sender.IsSelected = true;
			win.ActFrm.Add(sender);
			win.rgbColorProp.DataContext = win.rgbFrameProp.DataContext = sender;
		}
Esempio n. 2
0
		public static void Flash(List<Controller> con, FlashSettings sets) {
			SetupPort(sets.Port, sets.Speed);
			double synLen = GetSyncLength(con, sets.IsSync);
			foreach (Controller c in con) {
				if (c.Frames.Count == 0) {
					Worker.ReportProgress(0, "Контроллер " + c.Number + ':' + c.Button + " не содержит фреймов и пропущен.");
					continue;
				}
				EnterModeProgramming(c.Number, c.Button);
				Logging.Log.Write("Включен режим программирования");
				bool wErr = false;
				try {
					double frLen = 0;
					foreach (Frame f in c.Frames) {
						frLen += f.Length;
						if (!SendFrame(c.Number, f))
							wErr = true;
					}
					if (frLen < synLen) {
						Frame fr = new Frame { BegColor = Colors.Black, EndColor = Colors.Black, Length = synLen - frLen };
						SendFrame(c.Number, fr);
					}
					Logging.Log.Write("Фреймы отправлены");
				} catch (Exception e) {
					Logging.Log.Write(e.Message);
					Logging.Log.Write(e.StackTrace);
				} finally {
					ExitModeProgramming(c.Number);
					Logging.Log.Write("Выключен режим программирования");
				}
				if (wErr)
					Worker.ReportProgress(0, "Контроллер " + c.Number + ':' + c.Button + " прошит с ошибками.");
			}
		}
Esempio n. 3
0
		private static bool SendFrame(int controller, Frame frm) {
			List<byte> arr = new List<byte> { FEdge.Start, FType.Req, (byte)controller, FCmd.WriteFrame };
			List<byte> f = CreateData(frm);
			arr.Add((byte)f.Count);
			arr.AddRange(f);
			arr.Add(GetSumm(arr));
			arr.Add(FEdge.Stop);
			bool fine = SendData(arr.ToArray());
			byte[] rd = ReadAswer();
			if (rd == null)
				fine = false;
			return fine;
		}
Esempio n. 4
0
		private static List<byte> CreateData(Frame frm) {
			List<byte> rez = new List<byte>();
			byte[] len = BitConverter.GetBytes((ushort)(frm.Length * 100));
			rez.Add(len[0]);//TIME_L
			rez.Add(len[1]);//TIME_H
			rez.Add(frm.BegColor.R);//R1
			rez.Add(frm.BegColor.G);//G1
			rez.Add(frm.BegColor.B);//B1
			rez.Add(frm.EndColor.R);//R2
			rez.Add(frm.EndColor.G);//G2
			rez.Add(frm.EndColor.B);//B2
			return rez;
		}
Esempio n. 5
0
		internal static void ReplaceFrame(Frame draged, Frame trackFrame, bool after) {
			int oldInd = MWin.I.ActCont.Frames.IndexOf(draged);
			int newInd = MWin.I.ActCont.Frames.IndexOf(trackFrame);
			if (oldInd < newInd)
				newInd += after ? 0 : -1;
			else
				newInd += after ? 1 : 0;
			if (newInd != oldInd)
				MWin.I.ActCont.Frames.Move(oldInd, newInd);
		}