private void cmdAddPLCStorage_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Be carefull, writing to the PLC as a Storrage is BETA and not much tested yet!");
            string val = "Storage_" + (grdStorages.Items.Count + 1);

            if (DotNetSiemensPLCToolBoxLibrary.General.InputBox.Show("Storage-Name", "Name of the Storage", ref val) == DialogResult.OK)
            {
                foreach (var tmp in ProtokollerConfiguration.ActualConfigInstance.Storages)
                {
                    if (tmp.Name.ToLower().Trim() == val.ToLower().Trim())
                    {
                        MessageBox.Show("A Storage with this Name already Exists!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                }
                PLCConnectionConfiguration myIntConfig = new PLCConnectionConfiguration(val.Trim(), LibNodaveConnectionConfigurationType.ObjectSavedConfiguration);
                myIntConfig = DotNetSiemensPLCToolBoxLibrary.Communication.Configuration.ShowConfiguration(myIntConfig);
                if (myIntConfig != null)
                {
                    var storage = new PLCConfig()
                    {
                        Name = val
                    };
                    storage.Configuration = myIntConfig;
                    ProtokollerConfiguration.ActualConfigInstance.Storages.Add(storage);
                }
            }
        }
        public override void Connect_To_Database(StorageConfig config)
        {
            myConfig = config as PLCConfig;

            _plcConnection             = new PLCConnection(myConfig.Configuration);
            _plcConnection.AutoConnect = true;
            _plcConnection.Connect();
        }
        public override void Connect_To_Database(StorageConfig config)
        {
            myConfig = config as PLCConfig;

            _plcConnection             = new PLCConnection(myConfig.Configuration);
            _plcConnection.AutoConnect = true;
            _plcConnection.Connect();
            Logging.LogTextToLog4Net("Connect_To_Database() => \"" + _plcConnection.Name + "\" => Connect...");
        }
 /// <summary>
 /// 保存配置到配置文件
 /// </summary>
 /// <param name="navConfig">导航仪配置</param>
 /// <param name="rs232Config">RS232COM口配置</param>
 /// <param name="plcConfig">PLC配置</param>
 /// <returns>保存成功返回True</returns>
 public static bool Save(NavConfig navConfig, Rs232Config rs232Config, PLCConfig plcConfig)
 {
     if (navConfig == null && rs232Config == null && plcConfig == null)
     {
         return(false);
     }
     try
     {
         XmlDocument xmlDoc = new XmlDocument();
         xmlDoc.Load(configPath);
         if (navConfig != null)
         {
             XmlNode xmldocSelect = xmlDoc.SelectSingleNode("configs/Nav");
             xmldocSelect.Attributes["ip"].InnerText   = navConfig.Ip;
             xmldocSelect.Attributes["port"].InnerText = navConfig.Port.ToString();
         }
         if (rs232Config != null)
         {
             XmlNode xmldocSelect = xmlDoc.SelectSingleNode("configs/Can");
             xmldocSelect.Attributes["CanPortName"].InnerText = rs232Config.PortName;
             xmldocSelect.Attributes["BaudRate"].InnerText    = rs232Config.BaudRate.ToString();
         }
         if (plcConfig != null)
         {
             XmlNode xmldocSelect = xmlDoc.SelectSingleNode("configs/PLC");
             xmldocSelect.Attributes["ip"].InnerText   = plcConfig.Ip;
             xmldocSelect.Attributes["port"].InnerText = plcConfig.Port.ToString();
         }
         xmlDoc.Save(@"Configs\AGVConfig.xml");
         return(true);
     }
     catch (Exception ex)
     {
         Logger.Error("保存硬件配置文件失败.", ex);
         return(false);
     }
 }