public GXAMICommandPromptTab(Control parentForm, GXAmiClient client, GXAmiDataCollector collector, string media, string name, string settings) { Settings = settings.Replace(Environment.NewLine, ""); ParentDlg = parentForm; Media = media; MediaName = name; Client = client; Client.OnDeviceErrorsAdded += new DeviceErrorsAddedEventHandler(Client_OnDeviceErrorsAdded); Client.OnTasksAdded += new TasksAddedEventHandler(Client_OnTasksAdded); Collector = collector; InitializeComponent(); CancelBtn.Dock = CommandPromptTB.Dock = DockStyle.Fill; if (Environment.OSVersion.Platform == PlatformID.Win32NT) { try { CreateCaret(CommandPromptTB.Handle, IntPtr.Zero, 10, CommandPromptTB.Font.Height); ShowCaret(CommandPromptTB.Handle); } catch { //It's OK if this fails. } } }
/// <summary> /// Constructor. /// </summary> /// <param name="collector"></param> public GXAmiCommandPromptForm(GXAmiClient client, GXAmiDataCollector collector) { Client = client; DataCollector = collector; InitializeComponent(); ConnectingPanel.Dock = DockStyle.Fill; string selected = null; if (!string.IsNullOrEmpty(Gurux.DeviceSuite.Properties.Settings.Default.CommandPrompSettings)) { List<string> arr = new List<string>(Gurux.DeviceSuite.Properties.Settings.Default.CommandPrompSettings.Split(new char[]{';'})); if (arr.Count > 1) { selected = arr[0]; } } foreach (string media in collector.Medias) { //Gateway is not shown here. if (media != "Gateway") { int pos = MediaCB.Items.Add(media); if (selected != null && string.Compare(selected, media) == 0) { MediaCB.SelectedIndex = pos; } } } if (MediaCB.SelectedIndex == -1) { MediaCB.SelectedIndex = 0; } }
public GXAmiEventListener(GXAmiDataCollectorServer server, GXProxyClass pc, GXAmiClient dc) { Server = server; DC = dc; pc.OnUpdated += new PropertyUpdateEventHandler(OnUpdated); pc.OnError += new ErrorEventHandler(pc_OnError); pc.OnStateChange += new DeviceStateChangedEventHandler(pc_OnStateChange); pc.OnUpdateParameters += new UpdateparametersEventHandler(pc_OnUpdateParameters); pc.OnTrace += new TraceAddEventHandler(pc_OnTrace); }
public GXAmiDataCollectorForm(GXAmiClient client, GXAmiDataCollector collector, DataCollectorActionType action) { Action = action; Client = client; InitializeComponent(); Collector = collector; RefreshBtn.Text = Gurux.DeviceSuite.Properties.Resources.RefreshTxt; RefreshBtn.Enabled = action != DataCollectorActionType.Add; if (collector != null) { this.NameTB.Text = Collector.Name; this.IPAddressTB.Text = Collector.IP; this.DescriptionTB.Text = Collector.Description; if (Collector.Guid != Guid.Empty) { this.GuidTB.Text = Collector.Guid.ToString(); } if (Collector.LastRequestTimeStamp.HasValue) { LastConnectedTB.Text = Collector.LastRequestTimeStamp.Value.ToString(); } InternalCB.Checked = collector.Internal; } }
/// <summary> /// Initializes a new instance of the GXAmiImportForm class. /// </summary> public GXAmiImportForm(GXAmiClient client, GXDeviceManufacturerCollection manufacturers) : base(manufacturers, null) { InitializeComponent(); Client = client; }
/// <summary> /// Start GuruxAMI Data collector as console. /// </summary> /// <param name="args"></param> static void Main(string[] args) { //Update previous installed settings. if (Properties.Settings.Default.UpdateSettings) { Properties.Settings.Default.Upgrade(); Properties.Settings.Default.UpdateSettings = false; Properties.Settings.Default.Save(); } bool trace = false; GXAmiDataCollectorServer collector = null; try { for (int pos = 0; pos != args.Length; ++pos) { string tag = args[pos]; if (tag[0] == '/' || tag[0] == '-') { tag = tag.Substring(1).ToLower(); if (tag == "h") { GuruxAMI.DataCollector.Properties.Settings.Default.AmiHostName = args[++pos]; } if (tag == "p") { GuruxAMI.DataCollector.Properties.Settings.Default.AmiHostPort = args[++pos]; } //Register Data Collector again. if (tag == "r") { GuruxAMI.DataCollector.Properties.Settings.Default.AmiDCGuid = Guid.Empty; } //Trace messages if (tag == "t") { trace = true; } } } string host = GuruxAMI.DataCollector.Properties.Settings.Default.AmiHostName; if (string.IsNullOrEmpty(host)) { ShowHelp(); return; } Guid guid = GuruxAMI.DataCollector.Properties.Settings.Default.AmiDCGuid; Console.WriteLine("Starting Data Collector..."); if (!host.StartsWith("http://")) { host = "http://" + host + ":" + GuruxAMI.DataCollector.Properties.Settings.Default.AmiHostPort + "/"; } Console.WriteLine("Connecting " + host); GXAmiUser user = null; string r, dcName = null; GuruxAMI.Client.GXAmiClient cl = null; if (guid == Guid.Empty) { Console.WriteLine("Registering Data Collector to GuruxAMI Service: "); int pos = 0; do { Console.WriteLine("Enter user name:"); string username = Console.ReadLine(); if (username == "") { return; } Console.WriteLine("Enter password:"******"") { return; } cl = new GXAmiClient(host, username, password); //Get info from registered user. try { user = cl.GetUserInfo(); break; } catch (UnauthorizedAccessException) { continue; } }while(++pos != 3); //If authorisation failed. if (user == null) { return; } Console.WriteLine("Finding data collectors."); GXAmiDataCollector[] dcs = cl.GetDataCollectors(); //If there are existing DCs... if (dcs.Length != 0) { Console.WriteLine("Do you want to register new data collector or bind old? (n/b)"); do { r = Console.ReadLine().Trim().ToLower(); if (r == "n" || r == "b") { break; } }while (r == ""); } else { r = "n"; } //Old DC replaced. if (r == "b") { Console.WriteLine("Select data collector number that you want to bind:"); pos = 0; foreach (GXAmiDataCollector it in dcs) { ++pos; Console.WriteLine(pos.ToString() + ". " + it.Name); } do { r = Console.ReadLine().Trim(); int sel = 0; if (int.TryParse(r, out sel) && sel > 0 && sel <= pos) { guid = dcs[sel - 1].Guid; break; } }while (true); } else { do { Console.WriteLine("Enter name of the data collector:"); dcName = Console.ReadLine().Trim(); if (dcName == "") { return; } if (cl.Search(new string[] { dcName }, ActionTargets.DataCollector, SearchType.Name).Length == 0) { GXAmiDataCollector tmp = new GXAmiDataCollector(dcName, "", ""); cl.AddDataCollector(tmp, cl.GetUserGroups(false)); guid = tmp.Guid; break; } Console.WriteLine("Name exists. Give new one."); }while (true); } } collector = new GXAmiDataCollectorServer(host, guid); if (trace) { collector.OnTasksAdded += new TasksAddedEventHandler(OnTasksAdded); collector.OnTasksClaimed += new TasksClaimedEventHandler(OnTasksClaimed); collector.OnTasksRemoved += new TasksRemovedEventHandler(OnTasksRemoved); collector.OnError += new ErrorEventHandler(OnError); } collector.OnAvailableSerialPorts += new AvailableSerialPortsEventHandler(OnAvailableSerialPorts); GXAmiDataCollector dc = collector.Init(dcName); //If new Data collector is added bind it to the user groups. if (guid == Guid.Empty && cl != null) { cl.AddDataCollector(dc, cl.GetUserGroups(false)); } if (dc != null) { GuruxAMI.DataCollector.Properties.Settings.Default.AmiDCGuid = dc.Guid; } Console.WriteLine(string.Format("Data Collector '{0}' started.", dc.Name)); GuruxAMI.DataCollector.Properties.Settings.Default.Save(); } catch (Exception ex) { if (ex is UnauthorizedAccessException) { Console.WriteLine("Unknown data collector."); GuruxAMI.DataCollector.Properties.Settings.Default.AmiDCGuid = Guid.Empty; GuruxAMI.DataCollector.Properties.Settings.Default.Save(); } else { Console.WriteLine(ex.Message); } } //Wait until user press enter. ConsoleKeyInfo key; while ((key = System.Console.ReadKey()).Key != ConsoleKey.Enter) { System.Console.Write("\b \b"); } if (collector != null) { collector.Dispose(); } }
/// <summary> /// Constructor. /// </summary> /// <param name="client"></param> /// <param name="scheduleItem"></param> public GXAmiScheduleEditorDlg(GXAmiClient client, GXAmiSchedule schedule) { Client = client; InitializeComponent(); m_ScheduleItem = schedule; if (System.Globalization.DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek == DayOfWeek.Sunday) { Point TmpLoc = new Point(DaySunCb.Location.X, DaySunCb.Location.Y); DaySunCb.Location = DayMonCb.Location; DayMonCb.Location = DayTueCb.Location; DayTueCb.Location = DayWedCb.Location; DayWedCb.Location = DayThuCb.Location; DayThuCb.Location = DayFriCb.Location; DayFriCb.Location = DaySatCb.Location; DaySatCb.Location = TmpLoc; } FillEnums(); UpdateResouces(); NameTb.Text = m_ScheduleItem.Name; if (m_ScheduleItem.TransactionStartTime != null) { TransactionStartTimeTp.Value = m_ScheduleItem.TransactionStartTime.Value; } else { TransactionStartTimeTp.Checked = false; } if (m_ScheduleItem.TransactionEndTime != null) { TransactionEndTimeTp.Value = m_ScheduleItem.TransactionEndTime.Value; } //Has to be done to uncheck, known issue in .NET TransactionEndTimeTp.Checked = true; //Has to be done to uncheck, known issue in .NET TransactionEndTimeTp.Checked = m_ScheduleItem.TransactionEndTime != null; if (m_ScheduleItem.TransactionEndTime != null) { TransactionEndTimeTp.Value = m_ScheduleItem.TransactionEndTime.Value; } if (m_ScheduleItem.TransactionCount == 0) { TransactionCountCb.Checked = false; TransactionCountTb.Text = ""; } else { TransactionCountCb.Checked = true; TransactionCountTb.Text = m_ScheduleItem.TransactionCount.ToString(); } UpdateFrequencyTp.Value = new DateTime(((long)m_ScheduleItem.UpdateInterval) * 10000000 + UpdateFrequencyTp.MinDate.Ticks); RepeatModeCb.SelectedItem = ScheduleRepeatToString(m_ScheduleItem.RepeatMode); DayOfMonthTb.Text = m_ScheduleItem.DayOfMonth.ToString(); IntervalTb.Text = m_ScheduleItem.Interval.ToString(); ActionCb.SelectedItem = ScheduleActionToString(m_ScheduleItem.Action); if (m_ScheduleItem.ScheduleStartTime != null) { ScheduleStartDateTp.Value = m_ScheduleItem.ScheduleStartTime.Value; } if (m_ScheduleItem.ScheduleEndTime != null) { ScheduleEndDateTp.Value = m_ScheduleItem.ScheduleEndTime.Value; } ScheduleEndDateTp.Checked = true; //Has to be done to uncheck, known issue in .NET ScheduleEndDateTp.Checked = m_ScheduleItem.ScheduleEndTime != null; UpdateTargetCheckTree(); ErrorWaitTimeTp.Value = new DateTime(ErrorWaitTimeTp.MinDate.Ticks + ((long)m_ScheduleItem.FailWaitTime) * 10000); //ErrorWaitTimeTp.Value. = m_ScheduleItem.FailWaitTime/1000.0; ErrorTryCountTb.Text = m_ScheduleItem.FailTryCount.ToString(); ConnectionDelayTimeTp.Value = new DateTime(ConnectionDelayTimeTp.MinDate.Ticks + ((long)m_ScheduleItem.ConnectionDelayTime) * 10000); MaxThreadCountTb.Text = m_ScheduleItem.MaxThreadCount.ToString(); //ConnectionFailWaitTimeTb.Text = Convert.ToString(m_ScheduleItem.ConnectionFailWaitTime/1000.0); ConnectionFailWaitTimeTp.Value = new DateTime(ConnectionFailWaitTimeTp.MinDate.Ticks + ((long)m_ScheduleItem.ConnectionFailWaitTime) * 10000); ConnectionFailTryCountTb.Text = m_ScheduleItem.ConnectionFailTryCount.ToString(); if (m_ScheduleItem.DayOfWeeks == null) { DayMonCb.Checked = DayTueCb.Checked = DayWedCb.Checked = DayThuCb.Checked = DayFriCb.Checked = DaySatCb.Checked = DaySunCb.Checked = false; } else { System.Collections.Generic.List<DayOfWeek> list = new System.Collections.Generic.List<DayOfWeek>(); list.AddRange(m_ScheduleItem.DayOfWeeks); DayMonCb.Checked = list.Contains(DayOfWeek.Monday); DayTueCb.Checked = list.Contains(DayOfWeek.Tuesday); DayWedCb.Checked = list.Contains(DayOfWeek.Wednesday); DayThuCb.Checked = list.Contains(DayOfWeek.Thursday); DayFriCb.Checked = list.Contains(DayOfWeek.Friday); DaySatCb.Checked = list.Contains(DayOfWeek.Saturday); DaySunCb.Checked = list.Contains(DayOfWeek.Sunday); } OKBtn.Enabled = (m_ScheduleItem.Status & ScheduleState.Run) == 0; }
/// <summary> /// Start GuruxAMI Data collector as console. /// </summary> /// <param name="args"></param> static void Main(string[] args) { //Update previous installed settings. if (Properties.Settings.Default.UpdateSettings) { Properties.Settings.Default.Upgrade(); Properties.Settings.Default.UpdateSettings = false; Properties.Settings.Default.Save(); } bool trace = false; GXAmiDataCollectorServer collector = null; try { for (int pos = 0; pos != args.Length; ++pos) { string tag = args[pos]; if (tag[0] == '/' || tag[0] == '-') { tag = tag.Substring(1).ToLower(); if (tag == "h") { GuruxAMI.DataCollector.Properties.Settings.Default.AmiHostName = args[++pos]; } if (tag == "p") { GuruxAMI.DataCollector.Properties.Settings.Default.AmiHostPort = args[++pos]; } //Register Data Collector again. if (tag == "r") { GuruxAMI.DataCollector.Properties.Settings.Default.AmiDCGuid = Guid.Empty; } //Trace messages if (tag == "t") { trace = true; } } } string host = GuruxAMI.DataCollector.Properties.Settings.Default.AmiHostName; if (string.IsNullOrEmpty(host)) { ShowHelp(); return; } Guid guid = GuruxAMI.DataCollector.Properties.Settings.Default.AmiDCGuid; Console.WriteLine("Starting Data Collector..."); if (!host.StartsWith("http://")) { host = "http://" + host + ":" + GuruxAMI.DataCollector.Properties.Settings.Default.AmiHostPort + "/"; } Console.WriteLine("Connecting " + host); GXAmiUser user = null; string r, dcName = null; GuruxAMI.Client.GXAmiClient cl = null; if (guid == Guid.Empty) { Console.WriteLine("Registering Data Collector to GuruxAMI Service: "); int pos = 0; do { Console.WriteLine("Enter user name:"); string username = Console.ReadLine(); if (username == "") { return; } Console.WriteLine("Enter password:"******"") { return; } cl = new GXAmiClient(host, username, password); //Get info from registered user. try { user = cl.GetUserInfo(); break; } catch(UnauthorizedAccessException) { continue; } }while(++pos != 3); //If authorisation failed. if (user == null) { return; } Console.WriteLine("Finding data collectors."); GXAmiDataCollector[] dcs = cl.GetDataCollectors(); //If there are existing DCs... if (dcs.Length != 0) { Console.WriteLine("Do you want to register new data collector or bind old? (n/b)"); do { r = Console.ReadLine().Trim().ToLower(); if (r == "n" || r == "b") { break; } } while (r == ""); } else { r = "n"; } //Old DC replaced. if (r == "b") { Console.WriteLine("Select data collector number that you want to bind:"); pos = 0; foreach (GXAmiDataCollector it in dcs) { ++pos; Console.WriteLine(pos.ToString() + ". " + it.Name); } do { r = Console.ReadLine().Trim(); int sel = 0; if (int.TryParse(r, out sel) && sel > 0 && sel <= pos) { guid = dcs[sel - 1].Guid; break; } } while (true); } else { do { Console.WriteLine("Enter name of the data collector:"); dcName = Console.ReadLine().Trim(); if (dcName == "") { return; } if (cl.Search(new string[] { dcName }, ActionTargets.DataCollector, SearchType.Name).Length == 0) { GXAmiDataCollector tmp = new GXAmiDataCollector(dcName, "", ""); cl.AddDataCollector(tmp, cl.GetUserGroups(false)); guid = tmp.Guid; break; } Console.WriteLine("Name exists. Give new one."); } while (true); } } collector = new GXAmiDataCollectorServer(host, guid); if (trace) { collector.OnTasksAdded += new TasksAddedEventHandler(OnTasksAdded); collector.OnTasksClaimed += new TasksClaimedEventHandler(OnTasksClaimed); collector.OnTasksRemoved += new TasksRemovedEventHandler(OnTasksRemoved); collector.OnError += new ErrorEventHandler(OnError); } collector.OnAvailableSerialPorts += new AvailableSerialPortsEventHandler(OnAvailableSerialPorts); GXAmiDataCollector dc = collector.Init(dcName); //If new Data collector is added bind it to the user groups. if (guid == Guid.Empty && cl != null) { cl.AddDataCollector(dc, cl.GetUserGroups(false)); } if (dc != null) { GuruxAMI.DataCollector.Properties.Settings.Default.AmiDCGuid = dc.Guid; } Console.WriteLine(string.Format("Data Collector '{0}' started.", dc.Name)); GuruxAMI.DataCollector.Properties.Settings.Default.Save(); } catch (Exception ex) { if (ex is UnauthorizedAccessException) { Console.WriteLine("Unknown data collector."); GuruxAMI.DataCollector.Properties.Settings.Default.AmiDCGuid = Guid.Empty; GuruxAMI.DataCollector.Properties.Settings.Default.Save(); } else { Console.WriteLine(ex.Message); } } //Wait until user press enter. ConsoleKeyInfo key; while ((key = System.Console.ReadKey()).Key != ConsoleKey.Enter) { System.Console.Write("\b \b"); } if (collector != null) { collector.Dispose(); } }
void StartServer(object param) { bool initialize = (bool) param; GXDBService Server = null; try { this.BeginInvoke(new UpdateStatusEventHandler(OnUpdateStatusEventHandler), 0, "Starting GuruxAMI..."); string baseUr = Gurux.DeviceSuite.Properties.Settings.Default.AmiHostName; bool useServer = Gurux.DeviceSuite.Properties.Settings.Default.AmiHostName.Contains("localhost") || Gurux.DeviceSuite.Properties.Settings.Default.AmiHostName.Contains("*"); if (useServer) { string connStr = null; //If DB is set if (!string.IsNullOrEmpty(Gurux.DeviceSuite.Properties.Settings.Default.AmiDatabaseHostName)) { connStr = string.Format("Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID={2};Password={3}", Gurux.DeviceSuite.Properties.Settings.Default.AmiDatabaseHostName, Gurux.DeviceSuite.Properties.Settings.Default.AmiDatabaseName, Gurux.DeviceSuite.Properties.Settings.Default.AmiDBUserName, Gurux.DeviceSuite.Properties.Settings.Default.AmiDBPassword); } try { OrmLiteConnectionFactory f = new OrmLiteConnectionFactory(connStr, false, ServiceStack.OrmLite.MySql.MySqlDialectProvider.Instance); f.AutoDisposeConnection = true; Server = new GXDBService(baseUr, f, Gurux.DeviceSuite.Properties.Settings.Default.AmiDatabaseTablePrefix); if (Server.IsDatabaseCreated()) { Server.Update(); } } catch (System.Net.HttpListenerException) { //If GuruxAMI service is already started. Server = null; } } else { baseUr = Gurux.DeviceSuite.Properties.Settings.Default.AmiHostName; } if (Client == null) { if (baseUr.Contains("*")) { baseUr = baseUr.Replace("*", "localhost"); } Client = new GXAmiClient(baseUr, Gurux.DeviceSuite.Properties.Settings.Default.AmiUserName, Gurux.DeviceSuite.Properties.Settings.Default.AmiPassword); } //Create schedule server. if (SchedulerServer == null) { this.BeginInvoke(new UpdateStatusEventHandler(OnUpdateStatusEventHandler), -1, "Starting GuruxAMI schedule server..."); SchedulerServer = new GXAmiSchedulerServer(baseUr, Gurux.DeviceSuite.Properties.Settings.Default.AmiUserName, Gurux.DeviceSuite.Properties.Settings.Default.AmiPassword); } if (Client.IsDatabaseCreated()) { Client.OnDeviceProfilesAdded += new DeviceProfilesAddedEventHandler(Client_OnDeviceProfilesAdded); Client.OnDeviceProfilesRemoved += new DeviceProfilesRemovedEventHandler(Client_OnDeviceProfilesRemoved); Client.OnDataCollectorsAdded += new DataCollectorsAddedEventHandler(Client_OnDataCollectorsAdded); Client.OnDataCollectorsRemoved += new DataCollectorsRemovedEventHandler(Client_OnDataCollectorsRemoved); Client.OnDataCollectorsUpdated += new DataCollectorsUpdatedEventHandler(Client_OnDataCollectorsUpdated); Client.OnDeviceErrorsAdded += new DeviceErrorsAddedEventHandler(Client_OnDeviceErrorsAdded); Client.OnDeviceErrorsRemoved += new DeviceErrorsRemovedEventHandler(Client_OnDeviceErrorsRemoved); Client.OnDeviceGroupsAdded += new DeviceGroupsAddedEventHandler(Client_OnDeviceGroupsAdded); Client.OnDeviceGroupsRemoved += new DeviceGroupsRemovedEventHandler(Client_OnDeviceGroupsRemoved); Client.OnDeviceGroupsUpdated += new DeviceGroupsUpdatedEventHandler(Client_OnDeviceGroupsUpdated); Client.OnDevicesAdded += new DevicesAddedEventHandler(Client_OnDevicesAdded); Client.OnDevicesRemoved += new DevicesRemovedEventHandler(Client_OnDevicesRemoved); Client.OnDevicesUpdated += new DevicesUpdatedEventHandler(Client_OnDevicesUpdated); Client.OnSystemErrorsAdded += new SystemErrorsAddedEventHandler(Client_OnSystemErrorsAdded); Client.OnSystemErrorsRemoved += new SystemErrorsRemovedEventHandler(Client_OnSystemErrorsRemoved); Client.OnTasksAdded += new TasksAddedEventHandler(Client_OnTasksAdded); Client.OnTasksClaimed += new TasksClaimedEventHandler(Client_OnTasksClaimed); Client.OnTasksRemoved += new TasksRemovedEventHandler(Client_OnTasksRemoved); Client.OnValueUpdated += new ValueUpdatedEventHandler(Client_OnValueUpdated); Client.OnDeviceStateChanged += new DeviceStateChangedEventHandler(Client_OnDeviceStateChanged); Client.OnDataCollectorStateChanged += new DataCollectorsStateChangedEventHandler(Client_OnDataCollectorStateChanged); Client.OnTraceStateChanged += new TraceStateChangedEventHandler(Client_OnTraceStateChanged); Client.OnTraceAdded += new TraceAddedEventHandler(Client_OnTraceAdded); Client.OnTraceClear += new TraceClearEventHandler(Client_OnTraceClear); Client.OnSchedulesAdded += new SchedulesAddedEventHandler(Client_OnSchedulesAdded); Client.OnSchedulesRemoved += new SchedulesRemovedEventHandler(Client_OnSchedulesRemoved); Client.OnSchedulesUpdated += new SchedulesUpdatedEventHandler(Client_OnSchedulesUpdated); Client.OnSchedulesStateChanged += new SchedulesStateChangedEventHandler(Client_OnSchedulesStateChanged); Client.StartListenEvents(); SchedulerServer.Start(); //Get all DC automatically. GXAmiDataCollector[] collectors = new GXAmiDataCollector[0]; if (Gurux.DeviceSuite.Properties.Settings.Default.GetDataCollectorsAutomatically) { this.BeginInvoke(new UpdateStatusEventHandler(OnUpdateStatusEventHandler), -1, "Starting GuruxAMI data collectors..."); collectors = Client.GetDataCollectors(); Client_OnDataCollectorsAdded(Client, collectors); } if (Gurux.DeviceSuite.Properties.Settings.Default.GetDevicesAutomatically) { this.BeginInvoke(new UpdateStatusEventHandler(OnUpdateStatusEventHandler), -1, "Starting GuruxAMI devices..."); DateTime start = DateTime.Now; GXAmiDevice[] devices = Client.GetDevices(false, DeviceContentType.Main); Client_OnDevicesAdded(Client, null, devices); System.Diagnostics.Debug.WriteLine("Getting devices: " + (DateTime.Now - start).TotalSeconds.ToString()); } //Get all tasks and show them. Client_OnTasksAdded(Client, Client.GetTasks(TaskState.All, false)); //Get all schedules and show them. Client_OnSchedulesAdded(Client, Client.GetSchedules()); //Get all device profiles and show them GXAmiDeviceProfile[] profiles = Client.GetDeviceProfiles(true, false); Client_OnDeviceProfilesAdded(Client, profiles); this.BeginInvoke(new ServerStateChanged(OnServerStateChanged), true); //Start Data Collectors. if (Gurux.DeviceSuite.Properties.Settings.Default.AmiDataCollectors != null) { List<string> tmp = new List<string>(Gurux.DeviceSuite.Properties.Settings.Default.AmiDataCollectors.Cast<string>()); foreach (string str in tmp) { Guid guid = new Guid(str); try { GXAmiDataCollector dc = null; foreach (GXAmiDataCollector it2 in collectors) { if (it2.Guid == guid) { dc = it2; break; } } if (dc == null) { dc = Client.GetDataCollectorByGuid(guid); //DC might be null if DC not found from the DB. if (dc != null) { Client_OnDataCollectorsAdded(Client, new GXAmiDataCollector[] { dc }); } else { Gurux.DeviceSuite.Properties.Settings.Default.AmiDataCollectors.Remove(str); } } if (dc != null) { dc.Internal = true; StartDataCollector(guid); } } //If DC is removed. catch (UnauthorizedAccessException) { Gurux.DeviceSuite.Properties.Settings.Default.AmiDataCollectors.Remove(str); } } } } else { throw new Exception("GuruxAMI database not created."); } Started.Set(); this.BeginInvoke(new UpdateStatusEventHandler(OnUpdateStatusEventHandler), 1, Gurux.DeviceSuite.Properties.Resources.ReadyTxt); } catch (Exception ex) { if (initialize) { this.BeginInvoke(new UpdateStatusEventHandler(OnUpdateStatusEventHandler), 1, Gurux.DeviceSuite.Properties.Resources.ReadyTxt); } else { this.BeginInvoke(new UpdateStatusEventHandler(OnUpdateStatusEventHandler), 2, "GuruxAMI start failed: " + ex.Message); } Started.Set(); if (Client != null) { Client.Dispose(); Client = null; } } ClosingApplication.WaitOne(); if (SchedulerServer != null) { SchedulerServer.Stop(); SchedulerServer = null; } if (Server != null) { Server.Stop(); Server = null; } if (Client != null) { Client.Dispose(); Client = null; } foreach (GXAmiDataCollectorServer it in DataCollectors) { it.Close(); } ServerThreadClosed.Set(); }
/// <summary> /// Constructor. /// </summary> /// <param name="guid">Data Collector Guid.</param> public GXAmiDataCollectorServer(string baseUr, Guid guid) { DC = new GXAmiClient(baseUr, guid); }
public void Dispose() { if (DC != null) { //Close collector thread. Closing.Set(); TaskModified.Set(); if (Thread != null) { Thread.Join(); Thread = null; } DC.Dispose(); DC = null; } }
void Connect(object sender, GXAsyncWork work, object[] parameters) { GXAmiClient cl = new GXAmiClient(Info.Address, this.NameTB.Text, this.PasswordTB.Text); cl.GetUserInfo(); if (!work.IsCanceled) { Client = cl; } }
public GXAmiDeviceSettingsForm(GXAmiClient client, GuruxAMI.Common.GXAmiDevice device, GXAmiDataCollector[] dcs) { InitializeComponent(); DataCollectors = dcs; AvailableMedias = new List<string>(); Client = client; Device = device; ulong id = GetAllAvailableMediasFromDCs(); if (Device != null) { MediaConnections.AddRange(Device.Medias); } this.CollectorsCB.Items.Add(""); foreach (GXAmiDataCollector it in DataCollectors) { int pos2 = this.CollectorsCB.Items.Add(it); if (id == it.Id) { this.CollectorsCB.SelectedIndex = pos2; } } if (this.CollectorsCB.SelectedIndex == -1) { this.CollectorsCB.SelectedIndex = 0; } SettingsPanel.Dock = PropertyGrid.Dock = PresetList.Dock = CustomDeviceProfile.Dock = DockStyle.Fill; //GuruxAMI.Common.Device type can not be changed after creation. This is for secure reasons. PresetCB.Enabled = CustomRB.Enabled = PresetList.Enabled = CustomDeviceProfile.Enabled = Device == null; CustomDeviceProfile.Visible = false; if (Device != null) { //Add redundant conections. for (int pos = 1; pos < Device.Medias.Length; ++pos) { AddConnection(Device.Medias[pos]); } NameTB.Text = Device.Name; RefreshRateTp.Value = new DateTime(((long)Device.UpdateInterval) * 10000000 + RefreshRateTp.MinDate.Ticks); UpdateResendCnt(Device.ResendCount); UpdateWaitTime(Device.WaitTime); //Create UI Device so all assemblys are loaded. string path = Path.Combine(Gurux.Common.GXCommon.ApplicationDataPath, "Gurux"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); Gurux.Common.GXFileSystemSecurity.UpdateDirectorySecurity(path); } path = Path.Combine(path, "Gurux.DeviceSuite"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); Gurux.Common.GXFileSystemSecurity.UpdateDirectorySecurity(path); } path = Path.Combine(path, "DeviceProfiles"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); Gurux.Common.GXFileSystemSecurity.UpdateDirectorySecurity(path); } path = Path.Combine(path, Device.ProfileGuid.ToString()); //Load Device template if not loaded yet. if (!Directory.Exists(path)) { Directory.CreateDirectory(path); Gurux.Common.GXFileSystemSecurity.UpdateDirectorySecurity(path); byte[] data = Client.GetDeviceProfilesData(Device.ProfileGuid); GXZip.Import(this, data, path + "\\"); } path = Path.Combine(path, Device.ProfileGuid.ToString() + ".gxp"); UIDevice = GXDevice.Load(path); } else { RefreshRateTp.Value = new DateTime(((long)1) * 10000000 + RefreshRateTp.MinDate.Ticks); } //Add disabled actions. m_DisActions = new DisabledAction(Device == null ? Gurux.Device.DisabledActions.None : (Gurux.Device.DisabledActions)Device.DisabledActions); tabControl1.TabPages.Add(m_DisActions.DisabledActionsTB); this.Text = Gurux.DeviceSuite.Properties.Resources.DeviceSettingsTxt; this.GeneralTab.Text = Gurux.DeviceSuite.Properties.Resources.GeneralTxt; //Update helps from the resources. this.helpProvider1.SetHelpString(this.NameTB, Gurux.DeviceSuite.Properties.Resources.DeviceNameHelp); this.helpProvider1.SetHelpString(this.MediaCB, Gurux.DeviceSuite.Properties.Resources.MediaListHelp); this.helpProvider1.SetHelpString(this.RefreshRateTp, Gurux.DeviceSuite.Properties.Resources.RefreshRateHelp); this.helpProvider1.SetHelpString(this.OkBtn, Gurux.DeviceSuite.Properties.Resources.OKHelp); this.helpProvider1.SetHelpString(this.CancelBtn, Gurux.DeviceSuite.Properties.Resources.CancelHelp); }
/// <summary> /// Constructor. /// </summary> /// <param name="client"></param> public GXAmiSchedulerServer(GXAmiClient client) { Client = client; sharedClient = true; }
/// <summary> /// Constructor /// </summary> /// <param name="baseUr">Address of GuruxAMI server.</param> public GXAmiSchedulerServer(string baseUr, string userName, string password) { sharedClient = false; Client = new GXAmiClient(baseUr, userName, password); }