Esempio n. 1
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <remarks>
        /// Do not catch errors here.
        /// If error is occurred exception is shown and application is closed.
        /// </remarks>
        public MainForm()
        {
            InitializeComponent();
            CancelBtn.Enabled = false;

            Devices = new GXDLMSDeviceCollection();
            ObjectValueView.Visible = DeviceInfoView.Visible = DeviceList.Visible = false;
            ObjectValueView.Dock = ObjectPanelFrame.Dock = DeviceList.Dock = DeviceInfoView.Dock = DockStyle.Fill;
            ProgressBar.Visible = false;
            UpdateDeviceUI(null, DeviceState.None);
            Initialize();
            m_MruManager = new MRUManager(RecentFilesMnu);
            m_MruManager.OnOpenMRUFile += new OpenMRUFileEventHandler(this.OnOpenMRUFile);
        }
Esempio n. 2
0
 /// <summary>
 ///
 /// </summary>
 /// <returns></returns>
 GXDLMSDeviceCollection GetDevices()
 {
     GXDLMSDeviceCollection devices = new GXDLMSDeviceCollection();
     foreach (GXDLMSObject it in SelectedListItems.Values)
     {
         GXDLMSDevice dev = it.Parent.Tag as GXDLMSDevice;
         if (!devices.Contains(dev))
         {
             devices.Add(dev);
         }
     }
     //If no device item is selected return all devices.
     if (devices.Count == 0)
     {
         return this.Devices;
     }
     return devices;
 }
Esempio n. 3
0
 void Disconnect(System.Windows.Forms.Control sender, object[] parameters)
 {
     try
     {
         int pos = 0;
         int cnt;
         object obj = parameters[0];
         if (obj is GXDLMSDeviceCollection)
         {
             cnt = ((GXDLMSDeviceCollection)obj).Count;
             foreach (GXDLMSDevice it in (GXDLMSDeviceCollection)obj)
             {
                 sender.BeginInvoke(new ProgressEventHandler(this.OnProgress), null, "Disconnecting", ++pos, cnt);
                 it.Disconnect();
             }
         }
         else if (obj is GXDLMSDevice)
         {
             sender.BeginInvoke(new ProgressEventHandler(this.OnProgress), null, "Disconnecting", 0, 1);
             ((GXDLMSDevice)obj).Disconnect();
         }
         else if (obj is GXDLMSObjectCollection)
         {
             GXDLMSObjectCollection tmp = obj as GXDLMSObjectCollection;
             GXDLMSDeviceCollection devices = new GXDLMSDeviceCollection();
             foreach (GXDLMSObject it in tmp)
             {
                 GXDLMSDevice dev = it.Parent.Tag as GXDLMSDevice;
                 if (!devices.Contains(dev))
                 {
                     devices.Add(dev);
                 }
             }
             Disconnect(sender, new object[] { devices });
         }
         else
         {
             sender.BeginInvoke(new ProgressEventHandler(this.OnProgress), null, "Disconnecting", 0, 1);
             GXDLMSObject tmp = obj as GXDLMSObject;
             GXDLMSDevice dev = tmp.Parent.Tag as GXDLMSDevice;
             dev.Disconnect();
         }
     }
     catch (ThreadAbortException)
     {
         //User has cancel action. Do nothing.
     }
     catch (Exception Ex)
     {
         GXDLMS.Common.Error.ShowError(sender, Ex);
     }
     finally
     {
         sender.BeginInvoke(new ProgressEventHandler(this.OnProgress), null, "", 1, 1);
     }
 }
Esempio n. 4
0
 void Connect(System.Windows.Forms.Control sender, object[] parameters)
 {
     try
     {
         object obj = parameters[0];
         int pos = 0;
         int cnt;
         if (obj is GXDLMSDeviceCollection)
         {
             cnt = ((GXDLMSDeviceCollection)obj).Count;
             foreach (GXDLMSDevice it in (GXDLMSDeviceCollection)obj)
             {
                 if (!it.Media.IsOpen)
                 {
                     this.OnProgress(null, "Connecting", ++pos, cnt);
                     it.InitializeConnection();
                 }
             }
         }
         else if (obj is GXDLMSDevice)
         {
             if (!((GXDLMSDevice)obj).Media.IsOpen)
             {
                 this.OnProgress(null, "Connecting", 0, 1);
                 ((GXDLMSDevice)obj).InitializeConnection();
             }
         }
         else if (obj is GXDLMSObjectCollection)
         {
             GXDLMSObjectCollection tmp = obj as GXDLMSObjectCollection;
             GXDLMSDeviceCollection devices = new GXDLMSDeviceCollection();
             foreach (GXDLMSObject it in tmp)
             {
                 GXDLMSDevice dev = it.Parent.Tag as GXDLMSDevice;
                 if (!devices.Contains(dev))
                 {
                     devices.Add(dev);
                 }
             }
             Connect(sender, new object[] { devices });
         }
         else
         {
             this.OnProgress(null, "Connecting", 0, 1);
             GXDLMSObject tmp = obj as GXDLMSObject;
             GXDLMSDevice dev = tmp.Parent.Tag as GXDLMSDevice;
             if (!dev.Media.IsOpen)
             {
                 dev.InitializeConnection();
             }
         }
     }
     catch (ThreadAbortException)
     {
         //User has cancel action. Do nothing.
     }
     catch (Exception Ex)
     {
         GXDLMS.Common.Error.ShowError(sender, Ex);
     }
     finally
     {
         this.OnProgress(null, "Connecting", 1, 1);
     }
 }
Esempio n. 5
0
 /// <summary>
 /// Load settings from the file.
 /// </summary>
 /// <param name="path"></param>
 void LoadFile(string path)
 {
     //Save changes?
     if (this.Dirty)
     {
         DialogResult ret = MessageBox.Show(this, Properties.Resources.SaveChangesTxt, Properties.Resources.GXDLMSDirectorTxt, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
         if (ret == DialogResult.Cancel)
         {
             return;
         }
         if (ret == DialogResult.Yes)
         {
             if (!Save())
             {
                 return;
             }
         }
     }
     //Clear log every time when new device list is loaded.
     GXLogWriter.ClearLog();
     Initialize();
     int version = 1;
     using (XmlReader reader = XmlReader.Create(path))
     {
         List<Type> types = new List<Type>(Gurux.DLMS.GXDLMSClient.GetObjectTypes());
         types.Add(typeof(GXDLMSAttributeSettings));
         types.Add(typeof(GXDLMSAttribute));
         //Version is added to namespace.
         XmlSerializer x = new XmlSerializer(typeof(GXDLMSDeviceCollection), null, types.ToArray(), null, "Gurux1");
         if (!x.CanDeserialize(reader))
         {
             version = 0;
             x = new XmlSerializer(typeof(GXDLMSDeviceCollection), types.ToArray());
         }
         Devices = (GXDLMSDeviceCollection)x.Deserialize(reader);
         reader.Close();
         TreeNode node = ObjectTree.Nodes[0];
         node.Tag = Devices;
     }
     //Add devices to the device tree and update parser.
     foreach (GXDLMSDevice dev in Devices)
     {
         dev.Comm.parentForm = this;
         dev.Manufacturers = this.Manufacturers;
         GXManufacturer m = Manufacturers.FindByIdentification(dev.Manufacturer);
         if (m == null)
         {
             throw new Exception("Load failed. Invalid manufacturer: " + dev.Manufacturer);
         }
         if (version == 0)
         {
             dev.UseLogicalNameReferencing = m.UseLogicalNameReferencing;
         }
         dev.ObisCodes = m.ObisCodes;
         this.AddDevice(dev, false);
         RefreshDevice(dev, false);
     }
     GroupItems(GroupsMnu.Checked);
     m_Path = path;
     SetDirty(false);
     m_MruManager.Insert(0, path);
 }
Esempio n. 6
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <remarks>
        /// Do not catch errors here.
        /// If error is occurred exception is shown and application is closed.
        /// </remarks>
        public MainForm()
        {
            InitializeComponent();
            CancelBtn.Enabled = false;
            GroupBy = GXGroupBy.None;
            Devices = new GXDLMSDeviceCollection();
            ObjectValueView.Visible = DeviceInfoView.Visible = DeviceList.Visible = false;
            ObjectValueView.Dock = ObjectPanelFrame.Dock = DeviceList.Dock = DeviceInfoView.Dock = DockStyle.Fill;
            ProgressBar.Visible = false;
            UpdateDeviceUI(null, DeviceState.None);
            Initialize();
            m_MruManager = new MRUManager(RecentFilesMnu);
            m_MruManager.OnOpenMRUFile += new OpenMRUFileEventHandler(this.OnOpenMRUFile);

            string path = Path.Combine(GXManufacturerCollection.ObisCodesPath, "GraphItems.xml");
            if (File.Exists(path))
            {
                try
                {
                    using (TextReader reader = new StreamReader(path))
                    {
                        XmlSerializer x = new XmlSerializer(typeof(GXObisCodeGraphItemCollection), new Type[] { typeof(GXObisCodeGraphItem) });
                        this.GraphItems = (GXObisCodeGraphItemCollection)x.Deserialize(reader);
                        reader.Close();
                    }
                }
                catch
                {
                    this.GraphItems.Clear();
                    //It's OK if this fails.
                }
            }
        }