public override void ImportFromDevice(Control[] addinPages, GXDevice device, Gurux.Common.IGXMedia media) { media.Eop = device.GXClient.Eop; GXDLT645Device dev = device as GXDLT645Device; dev.Parser.IgnoreFrame = false; Dictionary<ulong, object> items = GXDLT645Property.ReadDataID(); GXCategory cat = device.Categories.Find("Default"); if (cat == null) { cat = new GXCategory("Default"); device.Categories.Add(cat); } media.Open(); int count = 0; foreach (var it in items) { Progress(++count, items.Count); byte[] data = dev.Parser.ReadValue(it.Key); lock (media.Synchronous) { media.Send(data, null); ReceiveParameters<byte[]> p = new ReceiveParameters<byte[]>() { Eop = media.Eop, WaitTime = device.WaitTime }; bool compleate = false; try { while (!(compleate = dev.Parser.IsPacketComplete(it.Key, p.Reply))) { if (!media.Receive<byte[]>(p)) { break; } } } catch (Exception ex) { Trace(ex.Message + Environment.NewLine); } // If data is not received or error has occurred. if (!compleate || dev.Parser.IsError(p.Reply)) { continue; } GXDLT645Data d = it.Value as GXDLT645Data; if (d != null) { Trace(it.Key + " " + d.Name + Environment.NewLine); cat.Properties.Add(new GXDLT645Property(it.Key, d.Name, d.Type, d.Access)); } else { GXDLT645TableTemplate t = it.Value as GXDLT645TableTemplate; Trace(it.Key + " " + t.Name + Environment.NewLine); GXDLT645Table table = new GXDLT645Table(); table.Name = t.Name; table.DataID = it.Key; foreach (GXDLT645Data col in t.Columns) { table.Columns.Add(new GXDLT645Property(it.Key, col.Name, col.Type, col.Access)); } device.Tables.Add(table); } } } }
public void Initialize() { if (Target is GXDLT645Property) { m_Property = Target as GXDLT645Property; NameTB.Text = m_Property.Name; DataIDCB.DropDownStyle = ComboBoxStyle.DropDown; FillProperties(); } else if (Target is GXDLT645Table) { m_Table = Target as GXDLT645Table; NameTB.Text = m_Table.Name; DataIDCB.DropDownStyle = ComboBoxStyle.DropDownList; FillTables(); } if (Target is GXDLT645Property) { string tmp = string.Format("{0:x8}", m_Property.DataID); DataIDCB.SelectedIndex = DataIDCB.FindString(tmp); } else if (Target is GXDLT645Table) { string tmp = string.Format("{0:x8}", m_Table.DataID); DataIDCB.SelectedIndex = DataIDCB.FindString(tmp); } if (m_Property == null) //If table. { typeLbl.Visible = typeCb.Visible = false; } else //If property. { if (m_Property.Type != DataType.None) { typeCb.SelectedItem = m_Property.Type.ToString(); } else { typeCb.SelectedIndex = -1; } } }