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; }
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 + " прошит с ошибками."); } }
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; }
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; }
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); }