Ejemplo n.º 1
0
        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);
                    }
                }
            }            
        }       
Ejemplo n.º 2
0
		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;
                }
            }
		}