private void Refresh7LEDSets() { for (int i = 0; i < dataGridView5.Rows.Count; i++) { LED7DisplayOutputSet dos = (LED7DisplayOutputSet)dataGridView5.Rows[i].Tag; dataGridView5.Rows[i].Cells[dataGridViewTextBoxColumn13.Index].Value = dos.OutsIDs(); } }
void EdytujToolStripMenuItemClick(object sender, EventArgs e) { // edytuj zbiór wyświetlaczy if (dataGridView5.CurrentRow != null) { LED7DisplayOutputSet dose = (LED7DisplayOutputSet)dataGridView5.CurrentRow.Tag; AddEditLED7DisplayOutputSetDialog d = new AddEditLED7DisplayOutputSetDialog(Configuration, dose); if (d.ShowDialog(this) == DialogResult.OK) { ShowDisplays7LEDSets(); } } }
void UsuńToolStripMenuItemClick(object sender, EventArgs e) { // usuń zbiór wyświetlaczy if (dataGridView5.CurrentRow != null) { LED7DisplayOutputSet dos = (LED7DisplayOutputSet)dataGridView5.CurrentRow.Tag; if (MessageBox.Show(this, "Czy napewno chcesz usunąć grupę wyświetlaczy 7-LED '" + dos.ID + "' ?", "Pytanie", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { List <LED7DisplayOutput> doses = new List <LED7DisplayOutput>(Configuration.LED7DisplayOutputs); doses.Remove(dos); Configuration.LED7DisplayOutputs = doses.ToArray(); dataGridView5.Rows.Remove(dataGridView5.CurrentRow); dataGridView5.Refresh(); } } }
void DataGridView5CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex > -1) { LED7DisplayOutputSet dio = (LED7DisplayOutputSet)dataGridView5.Rows[e.RowIndex].Tag; if (e.ColumnIndex == dataGridViewTextBoxColumn11.Index) { dio.ID = (string)dataGridView5.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; return; } if (e.ColumnIndex == dataGridViewTextBoxColumn12.Index) { dio.Description = (string)dataGridView5.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; return; } } }
public static LED7DisplayOutputSet Load(LED7DisplayOutput [] displays, XmlNode xml) { LED7DisplayOutputSet result = new LED7DisplayOutputSet(); result.ID = xml.Attributes["id"].Value; result.Description = xml.Attributes["description"].Value; List <Display> outputs = new List <Display>(); XmlNodeList nodes = xml.SelectNodes("display"); if (nodes != null) { foreach (XmlNode node in nodes) { string id = node.Attributes["id"].Value; int index = int.Parse(node.Attributes["index"].Value); LED7DisplayOutput dio = Array.Find <LED7DisplayOutput>(displays, delegate(LED7DisplayOutput o) { return(o.ID == id); }); if (dio == null) { throw new Exception("Brak zdefiniowanego wyświetlacza '" + id + "'."); } outputs.Add(new Display() { LED7Display = dio, Index = index }); } } result.Displays = outputs.ToArray(); result.Align = (Align)Enum.Parse(typeof(Align), xml.Attributes["align"].Value); result.Trim = (Trim)Enum.Parse(typeof(Trim), xml.Attributes["trim"].Value); result.Append = (Append)Enum.Parse(typeof(Append), xml.Attributes["append"].Value); result.AppendString = xml.Attributes["appendString"].Value; if (result.Append != Append.None && result.AppendString.Length == 0) { throw new Exception("Ustawiono dopełnianie tekstu ale nie ustawiono łańcucha dopełniającego w grupie wyświetlaczy '" + result.ID + "'."); } return(result); }
public static ModulesConfiguration Load() { if (__instance == null) { if (!File.Exists(ConfigurationFilePath)) { throw new FileNotFoundException(ConfigurationFilePath); } ModulesConfiguration c = new ModulesConfiguration(); XmlDocument xml = new XmlDocument(); xml.Load(ConfigurationFilePath); // zmienna pomocnicza Device f = null; // wczytanie urządzeń List <Device> devices = new List <Device>(); XmlNodeList nodes = xml.SelectNodes("configuration/devices/device"); foreach (XmlNode node in nodes) { Device d = Device.Load(node); f = devices.Find(delegate(Device o) { return(o.Id == d.Id); }); if (f == null) { devices.Add(Device.Load(node)); } else { throw new Exception("Istnieje już urządzenie o identyfikatorze '" + d.Id + "'."); } } c.Devices = devices.ToArray(); // wczytanie konfiguracji wyjść cyfrowych List <DigitalOutput> outputs = new List <DigitalOutput>(); nodes = xml.SelectNodes("configuration/digitalOutputs/output"); foreach (XmlNode node in nodes) { DigitalOutput output = DigitalOutput.Load(node); // znalezienie urządzenia f = devices.Find(delegate(Device o) { return(o.Id == output.DeviceId); }); if (f == null) { throw new Exception("Konfiguracja nie zawiera informacji o urządzeniu z identyfikatorem '" + output.DeviceId + "'."); } output.Device = f; outputs.Add(output); } c.DigitalOutputs = outputs.ToArray(); // wczytanie konfiguracji zbiorów wyjść cyfrowych nodes = xml.SelectNodes("configuration/digitalOutputs/outputSet"); foreach (XmlNode node in nodes) { DigitalOutputSet dos = DigitalOutputSet.Load(c.DigitalOutputs, node); outputs.Add(dos); } c.DigitalOutputs = outputs.ToArray(); // wczytanie konfiguracji wejść cyfrowych List <DigitalInput> inputs = new List <DigitalInput>(); nodes = xml.SelectNodes("configuration/digitalInputs/input"); foreach (XmlNode node in nodes) { DigitalInput input = DigitalInput.Load(node); // znalezienie urządzenia f = devices.Find(delegate(Device o) { return(o.Id == input.DeviceId); }); if (f == null) { throw new Exception("Konfiguracja nie zawiera informacji o urządzeniu z identyfikatorem '" + input.DeviceId + "'."); } input.Device = f; inputs.Add(input); } c.DigitalInputs = inputs.ToArray(); // wczytanie konfiguracji enkoderów List <Encoder> encoders = new List <Encoder>(); nodes = xml.SelectNodes("configuration/encoders/encoder"); foreach (XmlNode node in nodes) { Encoder e = Encoder.Load(c.DigitalInputs, node); encoders.Add(e); } c.Encoders = encoders.ToArray(); // wczytanie konfiguracji wyświetlaczy 7-led List <LED7DisplayOutput> ledOutputs = new List <LED7DisplayOutput>(); nodes = xml.SelectNodes("configuration/displays7LED/display"); foreach (XmlNode node in nodes) { LED7DisplayOutput output = LED7DisplayOutput.Load(node); // znalezienie urządzenia f = devices.Find(delegate(Device o) { return(o.Id == output.DeviceId); }); if (f == null) { throw new Exception("Konfiguracja nie zawiera informacji o urządzeniu z identyfikatorem '" + output.DeviceId + "'."); } output.Device = f; ledOutputs.Add(output); } // sprawdzenie czy jakaś nazwa się nie powtarza foreach (DigitalOutput digo in outputs) { int index = ledOutputs.Count; while (index-- > 0) { if (ledOutputs[index].ID == digo.ID) { ledOutputs.RemoveAt(index); } } } c.LED7DisplayOutputs = ledOutputs.ToArray(); // wczytanie konfiguracji zbiorów wyświetlaczy nodes = xml.SelectNodes("configuration/displays7LED/displaySet"); foreach (XmlNode node in nodes) { LED7DisplayOutputSet dos = LED7DisplayOutputSet.Load(c.LED7DisplayOutputs, node); ledOutputs.Add(dos); } c.LED7DisplayOutputs = ledOutputs.ToArray(); // wczytanie słownika dla wyświetlaczy 7-led LED7DisplaysDictionary.Load(xml.SelectSingleNode("configuration/displays7LEDDictionary")); CreateOrDeletePeripherals(c); __instance = c; } return(__instance); }
public static void CreateOrDeletePeripherals(ModulesConfiguration configuration) { if (configuration.Devices != null) { List <DigitalInput> inputs = new List <DigitalInput>(); List <DigitalOutput> outputs = new List <DigitalOutput>(); List <LED7DisplayOutput> displays = new List <LED7DisplayOutput>(); List <Encoder> encoders = new List <Encoder>(); foreach (Device d in configuration.Devices) { // znalezienie wszystkich wejść tego urządzenia List <DigitalInput> dis = new List <DigitalInput>(); if (configuration.DigitalInputs != null) { foreach (DigitalInput di in configuration.DigitalInputs) { if (di.DeviceId == d.Id && di.Index >= 0 && di.Index < d.Type.DigitalInputs) { DigitalInput ddd = dis.Find(delegate(DigitalInput o) { return(o.Index == di.Index); }); if (ddd == null) { dis.Add(di); } } } } // dodanie brakujących for (int i = 0; i < d.Type.DigitalInputs; i++) { if (dis.Find(delegate(DigitalInput o) { return(o.Index == i); }) == null) { dis.Add(new DigitalInput() { DeviceId = d.Id, Device = d, Index = i, ID = string.Format("{0}:input_{1}", d.Id, i.ToString("000")), Description = "Cyfrowe wejście", Repeat = false, RepeatAfter = 200, RepeatInterval = 200, }); } } inputs.AddRange(dis); // sprawdzenie czy istnieją wszystkie wejścia dla enkoderów if (configuration.Encoders != null) { List <DigitalInput> reserved = new List <DigitalInput>(); foreach (Encoder e in configuration.Encoders) { DigitalInput linput = inputs.Find(delegate(DigitalInput o) { return(o.ID == e.LeftInput.ID); }); if (linput == null) { throw new Exception("Brak wejścia '" + e.LeftInput.ToString() + "' do obsługi enkodera."); } if (reserved.Contains(linput)) { continue; } DigitalInput rinput = inputs.Find(delegate(DigitalInput o) { return(o.ID == e.RightInput.ID); }); if (rinput == null) { throw new Exception("Brak wejścia '" + e.RightInput.ToString() + "' do obsługi enkodera."); } if (reserved.Contains(rinput)) { continue; } reserved.Add(linput); reserved.Add(rinput); e.LeftInput = linput; e.RightInput = rinput; encoders.Add(e); } } // znalezienie wszystkich wyjść cyfrowych tego urządzenia List <DigitalOutput> dos = new List <DigitalOutput>(); if (configuration.DigitalOutputs != null) { foreach (DigitalOutput di in configuration.DigitalOutputs) { if (di.DeviceId == d.Id && di.Index >= 0 && di.Index < d.Type.DigitalOutputs) { DigitalOutput ddd = dos.Find(delegate(DigitalOutput o) { return(o.Index == di.Index); }); if (ddd == null) { dos.Add(di); } } } } // dodanie brakujących for (int i = 0; i < d.Type.DigitalOutputs; i++) { if (dos.Find(delegate(DigitalOutput o) { return(o.Index == i); }) == null) { dos.Add(new DigitalOutput() { DeviceId = d.Id, Device = d, Index = i, ID = string.Format("{0}:output_{1}", d.Id, i.ToString("000")), Description = "Cyfrowe wyjście", }); } } // sprawdzenie zbiorów wyjść if (configuration.DigitalOutputs != null) { List <DigitalOutputSet> dosets = new List <DigitalOutputSet>(); foreach (DigitalOutput di in configuration.DigitalOutputs) { if (di is DigitalOutputSet) { DigitalOutputSet dose = (DigitalOutputSet)di; if (dose.DigitalOutputs != null && dose.DigitalOutputs.Length > 0) { List <DigitalOutput> doses = new List <DigitalOutput>(dose.DigitalOutputs); int index = doses.Count; while (index-- > 0) { // znalezienie wyjścia o danym id if (dos.Find(delegate(DigitalOutput digo) { return(digo.ID == doses[index].ID); }) == null) { doses.RemoveAt(index); } } if (doses.Count > 0) { dose.DigitalOutputs = doses.ToArray(); dosets.Add(dose); } } } } dos.AddRange(dosets.ToArray()); } outputs.AddRange(dos); // znalezienie wszystkich wyświetlaczy 7led List <LED7DisplayOutput> led7 = new List <LED7DisplayOutput>(); if (configuration.LED7DisplayOutputs != null) { foreach (LED7DisplayOutput di in configuration.LED7DisplayOutputs) { if (di.DeviceId == d.Id && di.Index >= 0 && di.Index < d.Type.Displays7LED) { LED7DisplayOutput ddd = led7.Find(delegate(LED7DisplayOutput o) { return(o.Index == di.Index); }); if (ddd == null) { di.Device = d; led7.Add(di); } } } } // dodanie brakujących for (int i = 0; i < d.Type.Displays7LED; i++) { if (led7.Find(delegate(LED7DisplayOutput o) { return(o.Index == i); }) == null) { led7.Add(new LED7DisplayOutput() { DeviceId = d.Id, Device = d, Index = i, ID = string.Format("{0}:7ledDisplay_{1}", d.Id, i.ToString("000")), Description = "Wyświetlacz 7-LED", }); } } // sprawdzenie zbiorów wyjść if (configuration.LED7DisplayOutputs != null) { List <LED7DisplayOutputSet> dosets = new List <LED7DisplayOutputSet>(); foreach (LED7DisplayOutput di in configuration.LED7DisplayOutputs) { if (di is LED7DisplayOutputSet) { LED7DisplayOutputSet dose = (LED7DisplayOutputSet)di; if (dose.Displays != null && dose.Displays.Length > 0) { List <Display> doses = new List <Display>(dose.Displays); int index = doses.Count; while (index-- > 0) { // znalezienie wyjścia o danym id if (led7.Find(delegate(LED7DisplayOutput digo) { return(digo.ID == doses[index].LED7Display.ID); }) == null) { doses.RemoveAt(index); } } if (doses.Count > 0) { dose.Displays = doses.ToArray(); dosets.Add(dose); } } } } led7.AddRange(dosets.ToArray()); } displays.AddRange(led7); } configuration.DigitalInputs = inputs.ToArray(); configuration.Encoders = encoders.ToArray(); configuration.DigitalOutputs = outputs.ToArray(); configuration.LED7DisplayOutputs = displays.ToArray(); } }
void Button5Click(object sender, EventArgs e) { Device d = Selected; if (d != null) { if (MessageBox.Show(this, "Czy napewno chcesz usunąć urządzenie '" + d.Id + " - " + d.Description + "' i wszystkie jego peryferia ?", "Pytanie", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { // usunięcie urządzenia List <Device> ds = new List <Device>(Configuration.Devices); ds.Remove(d); Configuration.Devices = ds.ToArray(); // usunięcie wejść List <DigitalInput> dis = new List <DigitalInput>(Configuration.DigitalInputs); int index = dis.Count; while (index-- > 0) { if (dis[index].Device == d) { dis.RemoveAt(index); } } Configuration.DigitalInputs = dis.ToArray(); // usunięcie enkoderów List <Encoder> encoders = new List <Encoder>(Configuration.Encoders); index = encoders.Count; while (index-- > 0) { DigitalInput di = dis.Find(delegate(DigitalInput o) { return(o == encoders[index].LeftInput); }); if (di == null) { encoders.RemoveAt(index); continue; } di = dis.Find(delegate(DigitalInput o) { return(o == encoders[index].RightInput); }); if (di == null) { encoders.RemoveAt(index); continue; } } Configuration.Encoders = encoders.ToArray(); // usunięcie wyjść cyfrowych List <DigitalOutput> dos = new List <DigitalOutput>(Configuration.DigitalOutputs); index = dos.Count; while (index-- > 0) { if (!(dos[index] is DigitalOutputSet)) { if (dos[index].Device == d) { dos.RemoveAt(index); } } } index = dos.Count; while (index-- > 0) { if (dos[index] is DigitalOutputSet) { DigitalOutputSet dose = (DigitalOutputSet)dos[index]; List <DigitalOutput> doses = new List <DigitalOutput>(dose.DigitalOutputs); int index2 = doses.Count; while (index2-- > 0) { if (doses[index2].Device == d) { doses.RemoveAt(index2); } } if (doses.Count > 0) { dose.DigitalOutputs = doses.ToArray(); } else { dos.RemoveAt(index); } } } Configuration.DigitalOutputs = dos.ToArray(); // usunięcie wyświetlaczy List <LED7DisplayOutput> disps = new List <LED7DisplayOutput>(Configuration.LED7DisplayOutputs); index = disps.Count; while (index-- > 0) { if (!(disps[index] is LED7DisplayOutputSet)) { if (disps[index].Device == d) { disps.RemoveAt(index); } } } index = disps.Count; while (index-- > 0) { if (disps[index] is LED7DisplayOutputSet) { LED7DisplayOutputSet dose = (LED7DisplayOutputSet)disps[index]; List <Display> doses = new List <Display>(dose.Displays); int index2 = doses.Count; while (index2-- > 0) { if (doses[index2].LED7Display.Device == d) { doses.RemoveAt(index2); } } if (doses.Count > 0) { dose.Displays = doses.ToArray(); } else { disps.RemoveAt(index); } } } Configuration.LED7DisplayOutputs = disps.ToArray(); RefreshConfiguration(); } } }
public AddEditLED7DisplayOutputSetDialog(ModulesConfiguration configuration, LED7DisplayOutputSet led7DisplayOutputSet) { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); _configuration = configuration; LED7DisplayOutputSet = led7DisplayOutputSet; comboBox1.Items.Add(Align.Left); comboBox1.Items.Add(Align.Center); comboBox1.Items.Add(Align.Right); comboBox1.SelectedItem = Align.Left; comboBox2.Items.Add(Trim.Left); comboBox2.Items.Add(Trim.Right); comboBox2.SelectedItem = Trim.Right; comboBox3.Items.Add(Append.None); comboBox3.Items.Add(Append.Left); comboBox3.Items.Add(Append.Right); comboBox3.SelectedItem = Append.None; foreach (LED7DisplayOutput dos in _configuration.LED7DisplayOutputs) { if (!(dos is LED7DisplayOutputSet)) { listBox1.Items.Add(new Output() { DO = dos }); } } if (LED7DisplayOutputSet == null) { Text = "Dodaj nową grupę wyświetlaczy 7-LED"; } else { Text = "Edytuj grupę wyświetlaczy 7-LED"; Array.Sort(LED7DisplayOutputSet.Displays); for (int i = 0; i < LED7DisplayOutputSet.Displays.Length; i++) { for (int j = 0; j < listBox1.Items.Count; j++) { if (LED7DisplayOutputSet.Displays[i].LED7Display == ((Output)listBox1.Items[j]).DO) { Output o = (Output)listBox1.Items[j]; listBox1.Items.Remove(o); listBox2.Items.Add(o); break; } } } textBox2.Text = LED7DisplayOutputSet.ID; textBox1.Text = LED7DisplayOutputSet.Description; comboBox1.SelectedItem = LED7DisplayOutputSet.Align; comboBox2.SelectedItem = LED7DisplayOutputSet.Trim; comboBox3.SelectedItem = LED7DisplayOutputSet.Append; textBox3.Text = LED7DisplayOutputSet.AppendString; } }
void Button1Click(object sender, EventArgs e) { string id = textBox2.Text; if (id == null || id.Trim().Length == 0) { MessageBox.Show(this, "Podany identyfikator jest niepoprawny.", "Uwaga", MessageBoxButtons.OK, MessageBoxIcon.Warning); textBox2.Focus(); return; } string description = textBox1.Text; if (comboBox1.SelectedIndex == -1) { MessageBox.Show(this, "Nie wybrano rodzaju wyrównania.", "Uwaga", MessageBoxButtons.OK, MessageBoxIcon.Warning); comboBox1.Focus(); return; } Align align = (Align)comboBox1.SelectedItem; if (comboBox2.SelectedIndex == -1) { MessageBox.Show(this, "Nie wybrano rodzaju przycięcia.", "Uwaga", MessageBoxButtons.OK, MessageBoxIcon.Warning); comboBox2.Focus(); return; } Trim trim = (Trim)comboBox2.SelectedItem; if (comboBox3.SelectedIndex == -1) { MessageBox.Show(this, "Nie wybrano rodzaju dołączenia.", "Uwaga", MessageBoxButtons.OK, MessageBoxIcon.Warning); comboBox3.Focus(); return; } Append append = (Append)comboBox3.SelectedItem; string appendString = textBox3.Text; if (append != Append.None && appendString.Length == 0) { MessageBox.Show(this, "Nie wpisano ciągu dołączanego.", "Uwaga", MessageBoxButtons.OK, MessageBoxIcon.Warning); textBox3.Focus(); return; } if (listBox2.Items.Count == 0) { MessageBox.Show(this, "Nie wybrano wyświetlaczy.", "Uwaga", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } List <Display> displays = new List <Display>(); for (int i = 0; i < listBox2.Items.Count; i++) { Output o = (Output)listBox2.Items[i]; displays.Add(new Display() { LED7Display = o.DO, Index = i }); } if (LED7DisplayOutputSet == null) { LED7DisplayOutputSet = new LED7DisplayOutputSet(); } LED7DisplayOutputSet.ID = id; LED7DisplayOutputSet.Description = description; LED7DisplayOutputSet.Align = align; LED7DisplayOutputSet.Trim = trim; LED7DisplayOutputSet.Append = append; LED7DisplayOutputSet.AppendString = appendString; LED7DisplayOutputSet.Displays = displays.ToArray(); DialogResult = DialogResult.OK; Close(); }
public static string FormatText(LED7DisplayOutputSet area, string text, out int start) { return(FormatText(area.Align, area.Trim, area.Append, area.AppendString, area.Displays.Length, text, out start)); }