Ejemplo n.º 1
0
        public void AddChannels(List<Channel> channels)
        {
            foreach (Channel c in channels.Where(x => x.Enabled > 0))
            {
                Dictionary<String, String> ConnectionOptions = StringToDictionary.Convert(c.ConnectionString);
                // TODO: Try/catch around this to continue after hitting a bad channel
                switch (c.Type.ToLower())
                {
                    case "tcpclient":

                        if (ConnectionOptions.Keys.Contains("address") && ConnectionOptions.Keys.Contains("port"))
                        {
                            UInt16 port = Convert.ToUInt16(ConnectionOptions["port"]);
                            if (port == 0) throw new FormatException();

                            // TODO timespan option
                            IChannel ch = DNP3Manager.AddTCPClient(c.Name, LogLevel.Info, TimeSpan.FromSeconds(5), ConnectionOptions["address"], port);
                            ChannelWrapper wr = new ChannelWrapper(c, ch);
                            wr.OnStateChanged += this.ChannelStateChanged;

                            wr.Channel.AddStateListener(new Action<ChannelState>(wr.StateChanged));

                            Channels.Add(wr);

                        }

                        break;

                    case "serial":
                        if (ConnectionOptions.Keys.Contains("port") && ConnectionOptions.Keys.Contains("baud"))
                        {
                            UInt16 baud = Convert.ToUInt16(ConnectionOptions["baud"]);
                            if (baud == 0) throw new FormatException();

                            // TODO: more serial settings
                            SerialSettings ss = new SerialSettings(ConnectionOptions["port"], baud, 8, 1, Parity.NONE, FlowControl.NONE);
                            // TODO: timespan option
                            IChannel ch = DNP3Manager.AddSerial(c.Name, LogLevel.Info, TimeSpan.FromSeconds(5), ss);
                            ChannelWrapper wr = new ChannelWrapper(c, ch);
                            wr.OnStateChanged += this.ChannelStateChanged;

                            wr.Channel.AddStateListener(new Action<ChannelState>(wr.StateChanged));

                            Channels.Add(wr);

                        }

                        break;
                }
            }
        }
Ejemplo n.º 2
0
 private void buttonAdd_Click(object sender, EventArgs e)
 {
     try
     {
         String port = this.comboBoxPort.Text;
         int baud = int.Parse(this.comboBoxBaud.Text);
         int dataBits = int.Parse(this.comboBoxDataBits.Text);
         Parity parity = this.GetParity();
         int stopBits = int.Parse(this.comboBoxStopBits.Text);
         FlowControl flowControl = this.GetFlowControl();
         SerialSettings ss = new SerialSettings(port, baud, dataBits, stopBits, parity, flowControl);
         if (this.SerialPortAdded != null) SerialPortAdded(ss);
         this.Close();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
Ejemplo n.º 3
0
 private void stackBrowser1_OnSerialPortAdded(SerialSettings settings)
 {
     sm.AddSerial(settings.port, FilterLevel.LEV_WARNING, 5000, settings);
 }
Ejemplo n.º 4
0
 void form_SerialPortAdded(SerialSettings settings)
 {
     if (this.OnSerialPortAdded != null)
     {
         if (root.Nodes.ContainsKey(settings.port)) //port names cannot be duplicates
         {
             MessageBox.Show("A port with that name already exists: " + settings.port);
         }
         else
         {
             this.OnSerialPortAdded(settings);
             TreeNode node = this.root.Nodes.Add(settings.port, settings.port);
             EventHandler addMasterAction = (obj, e) => this.AddMasterClick(node);
             EventHandler removePortAction = (obj, e) => this.RemovePortClick(node);
             node.ContextMenuStrip = this.WireNewPortMenuStrip(addMasterAction, removePortAction);
             node.ToolTipText = settings.ToString();
         }
     }
 }