Ejemplo n.º 1
0
        /// <summary>
        /// Metoda wywolywana w odpowiedzi na "apply"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_apply_settings_OnClick(object sender, RoutedEventArgs e)
        {
            AppSettings.BaudRate = Convert.ToInt32(TextBox_SerialBaudRate.Text);        // Jako , ze ta wartosc nie jest zapisywana przez OnChangedEvent

            needsSettingsUpdate = true;
            AppProfileManager.Save_ApplicationProfile(this.AppSettings);
            Show_Msg();
        }
Ejemplo n.º 2
0
        private void Slider_Brightness_OnValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e)
        {
            try
            {
                ApplicationProfile.ChannelSettings.Brightness = Slider_Brightness.Value;

                AppProfileManager.Save_ApplicationProfile(ApplicationProfile);
            }
            catch (Exception)
            {
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Glowne okno zaladowane
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
        {
            // [1] - Check License
            if (!isLicenseFilePresent)
            {
                TextBox_StatusBar_Bottom.Text = "No license present";
            }
            else
            {
                try
                {
                    lcm.LoadLicenseDetails();
                    TextBox_StatusBar_Bottom.Text = String.Format("Registered to {0} {1}", lcm.GetByKeyName("FirstName"),
                                                                  lcm.GetByKeyName("LastName"));
                }
                catch
                {
                    // ignored
                }
            }


            // [3] - Load profile
            ApplicationProfile = AppProfileManager.Load_ApplicationProfile();      // Try to load the profile if does not exists
            // [3a] - See if we should be minimized
            if (ApplicationProfile.Autostart)
            {
                this.WindowState = WindowState.Minimized;                               // This starts minimized app if we choosed to AutoStart application
            }
            // [3b] - Assign proper value to brightness slider
            Slider_Brightness.Value = ApplicationProfile.ChannelSettings.Brightness;
            // [4] - Configure COM communications
            serialDeviceController = ApplicationProfile.LastCOMconnected == "" ? new DeviceController(ApplicationProfile.BaudRate) : new DeviceController(ApplicationProfile.BaudRate, ApplicationProfile.LastCOMconnected);
            // [4a] - Subscribe to event
            serialDeviceController.OnCOMdisconnected += (o, args) =>
            {
                Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
                {
                    ToggleButton_Start.Content = "Start";                      // Zmieniamy napis na guziku
                    isRGBdataAqquireRunning    = false;                        // Zmieniamy status naszej flagi
                    Stop_Data_Aqquire          = true;                         // Zmieniamy flage aby Ambi nie wysylalo danych

                    TextBlock_StatusBar_1.Text = " Disconnected";
                }));
            };

            // [5] - Ustaw podstawowe ustawienia
            channelsManagement = new ChannelsManagement(ApplicationProfile.ChannelSettings, (int)SystemParameters.PrimaryScreenHeight, (int)SystemParameters.PrimaryScreenWidth);    // Ustawienia
            // [6] - Konfiguracja TASKa dla chwytania danych z ekranu
            #region Task - lapanie danych
            tsk_RGBdata = new Task(() =>
            {
                while (true)
                {
                    if (!(Stop_Data_Aqquire))
                    {
                        if (serialDeviceController.DeviceConnected)
                        {
                            // Funkcje sluzace do zlapania ekranu
                            Surface s = rgbManagement.CaptureScreen(
                                (int)SystemParameters.PrimaryScreenWidth,
                                (int)SystemParameters.PrimaryScreenHeight
                                );
                            DataRectangle dr = s.LockRectangle(LockFlags.None);
                            DataStream gs    = dr.Data;

                            foreach (LightChannel channel in channelsManagement.LightChannels)
                            {
                                //TODO: Sprawdzamy brightness
                                //rgbManagement.AverageScreenRGBfromChannel(gs, channel, channelsManagement.Pixel_Min_Treshold);

                                try
                                {
                                    rgbManagement.AverageScreen(gs, channel, channelsManagement.Pixel_Min_Treshold,
                                                                ApplicationProfile.ChannelSettings.Brightness);
                                }
                                catch
                                {
                                }
                                //TODO : Ta funkcja zostanie "fade out"

                                //if (channelsManagement.Average_Strong_Colors)
                                //{

                                //    //RgBcapture.AdjustAverageRGB(channel, channelsManagement.Average_Strong_Colors_Adjustment);
                                //}
                            }

                            serialDeviceController.Send_Data_To_Serial(new byte[1] {
                                0x01
                            });                                                                                                            // wypychamy dane na pasek

                            serialDeviceController.Send_Data_To_Serial(rgbManagement.CalculateRGBarray(channelsManagement.LightChannels)); // wypychamy dane na pasek

                            serialDeviceController.Send_Data_To_Serial(new byte[1] {
                                0x02
                            });                  // wypychamy dane na pasek

                            s.UnlockRectangle(); // <---------------------  UNLOCK !!!
                            s.Dispose();
                        }
                    }
                }
            });
            #endregion
            // [4b] - See if we must AutoRun our process :D
            if (ApplicationProfile.AutoRun)
            {
                ToggleButton_Start.IsEnabled = !ToggleButton_Start.IsEnabled;   // Toggle button state
                Action_Start();                                                 // Start Ambi
            }
            // [7] Tray configs
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Metoda wywolywana aby uruchomic Ambi
        /// </summary>
        private void Action_Start()
        {
            if (serialDeviceController.DeviceConnected)                       // Jesli juz jestesmy podlaczeniu to chcemy uruchomic Ambi wczesniej skonfigurowane
            {
                ToggleButton_Start.Content   = "Stop";                        // Zmieniamy napis na guziku
                isRGBdataAqquireRunning      = true;                          // Zmieniamy status naszej flagi
                Stop_Data_Aqquire            = false;                         // Zmieniamy flage aby Ambi nie wysylalo danych
                TextBlock_StatusBar_1.Text   = " Connected | Running";
                ToggleButton_Start.IsEnabled = !ToggleButton_Start.IsEnabled; // Toggle button state
            }
            else
            {
                #region Jesli musimy wyszukac nasze urzadzenie
                if (String.IsNullOrEmpty(ApplicationProfile.LastCOMconnected))                    // Czy juz kiedys sie podlaczalismy do urzadzenia ?
                {
                    TextBlock_StatusBar_1.Text = "Searching for device...";                       // Wyswietl informacje ze szukamy urzadzenia

                    if (serialDeviceController.SearchForConnectedDevice("A1"))                    // Czy znalazles urzadzenie posrod wszystkich COM
                    {
                        TextBlock_StatusBar_1.Text = "Found! Connecting...";                      // Wyswietl informacje ze sie podlaczamy

                        ApplicationProfile.LastCOMconnected = serialDeviceController.ComPortName; // Zapisz pod jakim portem znalezlismy urzadzenie

                        AppProfileManager.Save_ApplicationProfile(ApplicationProfile);            // Zapisz profil
                    }
                    else
                    {
                        TextBlock_StatusBar_1.Text   = "Device not found!";           // Wyswietl informacje ze nie znalezlismy urzadzenia
                        ToggleButton_Start.Content   = "Start";
                        ToggleButton_Start.IsEnabled = !ToggleButton_Start.IsEnabled; // Toggle button state
                    }
                }
                #endregion

                #region Jesli znamy juz port COM pod ktorym bylo nasze urzadzenie
                else
                {
                    TextBlock_StatusBar_1.Text = "Searching for device...";     // Wyswietl informacje ze szukamy urzadzenia

                    // Jesli nie to musimy je wyszukac ....
                    // ... jesli znalezlismy nasze urzadzenie.....
                    if (serialDeviceController.CheckForConnectedDevice("A1"))   // Jesli udalo Ci sie polaczyc
                    {
                        TextBlock_StatusBar_1.Text = "Found! Connecting...";
                    }
                    else
                    {
                        ApplicationProfile.LastCOMconnected = "";                      // Wyczysc informacje o ostatnim porcie COM z profilu

                        AppProfileManager.Save_ApplicationProfile(ApplicationProfile); // Zapisz profil

                        TextBlock_StatusBar_1.Text = "Device not found!";              // Wyswietl informacje ze urzadzenie nie zostalo znalezione

                        ToggleButton_Start.Content = "Start";

                        ToggleButton_Start.IsEnabled = !ToggleButton_Start.IsEnabled;               // Toggle button state
                    }
                }
                #endregion

                #region Proces wyszukiwania zakonczony ... Podlaczamy sie

                if (serialDeviceController.DeviceFound)
                {
                    if (serialDeviceController.Initialize_Serial_Connection())
                    {
                        TextBlock_StatusBar_1.Text = "Connected";                                   // Wyswietl info ze jestesmy polaczeni
                        ToggleButton_Start.Content = "Stop";                                        // Zmien text na guziku tak zeby mozna bylo zatrzymac Ambi

                        if (tsk_RGBdata.Status == TaskStatus.Running)                               // Na wypadek disconnecta
                        {
                            Stop_Data_Aqquire = false;                                              // Wznow transmisje
                        }
                        else
                        {
                            tsk_RGBdata.Start();                                                        // Uruchom zadanie
                        }

                        isRGBdataAqquireRunning = true;                                             // Zmien wartosc zmiennej informujacej czy smigamy z Ambi

                        TextBlock_StatusBar_1.Text = " Connected | Running";

                        ToggleButton_Start.IsEnabled = !ToggleButton_Start.IsEnabled;               // Toggle button state
                    }
                    else
                    {
                        TextBlock_StatusBar_1.Text = "Failed to connect";                           // Wyswietl info ze jestesmy polaczeni
                        ToggleButton_Start.Content = "Start";                                       // Zmien text na guziku tak zeby mozna bylo zatrzymac Ambi

                        ToggleButton_Start.IsEnabled = !ToggleButton_Start.IsEnabled;               // Toggle button state
                    }
                }


                #endregion
            }
        }