private void filePickerButton_Click(object sender, RoutedEventArgs e)
        {
            // Create the OpenFIleDialog object
            Microsoft.Win32.OpenFileDialog openPicker = new Microsoft.Win32.OpenFileDialog();

            // Add file filters
            openPicker.DefaultExt = ".911";
            openPicker.Filter     = "Файлы дискретных и аналоговых данных с гарнисажных печей|*.911";

            // Display the OpenFileDialog by calling ShowDialog method
            Nullable <bool> result = openPicker.ShowDialog();

            // Check to see if we have a result
            if (result == true)
            {
                // Application now has read/write access to the picked file
                // I am saving the file path to a textbox in the UI to display to the user
                // as well as a Globals.fileName variable to pass to a method
                WriteLine("Имя прежде выбранного файла : {0} ", Globals.fileName);
                filePathTextBox.Text = openPicker.FileName.ToString();
                Globals.fileName     = filePathTextBox.Text;
                //проверка содержимого файла,его первого блока
                WriteLine(Globals.fileName);
                Globals.readAllTheBytes(Globals.fileName);
                ReadParamFromDisk packedParameters = new ReadParamFromDisk(Globals.fileName); //повторное чтение файла параметров
                                                                                              //в память с инструментарием для работы с ним.
                app.unpackedParameters = new TickParamsAll(packedParameters);                 //получение распакованного массива
                this._remembranceOfFileName.fileName = Globals.fileName;
                //TimeMover.numberOfSecond = TimeMover.numberOfSecond;
                //voltagePlotting(ParameterName.Напряжение_дуги, voltageGraph);
                //currentPlotting(ParameterName.Ток_общ, currentGraph);
                //vacuumPlotting(ParameterName.Вакуум, vacuumGraph);
                //waterPlotting(ParameterName.Расход_воды, waterGraph);
            }
        }
Example #2
0
    public TickParamsAll(ReadParamFromDisk packedParameters)      //ReadParamFromDisk is a custom
    //collection of packed blocks, so we can traverse it and inflate it into an array.
    {
        this.packedParameters   = packedParameters;
        this.inflatedParameters = new byte[Constants.SecondsInADay * Constants.ParamsBlockLengthInBytes];

        inflate();
    }
Example #3
0
        public void Startup_Procedure(object x, System.EventArgs e)
        {
            Console.WriteLine("Запуск главной формы");

            Application app = Current;

            //Считываем с диска файл с параметрами,имя файла запомнено с помощью
            //механизма ApplicationSettingBase
            mySettings = new MyUserSettings();
            scull_Furnaces_Main_Window = new Scull_Furnaces_Main_Window();
            scull_Furnaces_Main_Window.InitializeComponent();
            //Устанавливаем имя считываемого файла из сохранённого значания, оно будет обновлятся
            //после диалога с пользователем
            TabControlData[0].canvasForDiplayedPlot = scull_Furnaces_Main_Window.voltageGraph;
            TabControlData[1].canvasForDiplayedPlot = scull_Furnaces_Main_Window.currentGraph;
            TabControlData[2].canvasForDiplayedPlot = scull_Furnaces_Main_Window.vacuumGraph;
            TabControlData[3].canvasForDiplayedPlot = scull_Furnaces_Main_Window.waterGraph;
            scull_Furnaces_Main_Window._remembranceOfFileName.fileName = mySettings.FileName;
            //записываем его в глобальное поле как для доступа из консольной программы
            Globals.fileName = scull_Furnaces_Main_Window._remembranceOfFileName.fileName;
            WriteLine("Считанное имя файла : {0}", Globals.fileName);
            scull_Furnaces_Main_Window._remembranceOfFileName.PropertyChanged += rememberTheChosenFileName;

            Globals.readAllTheBytes(Globals.fileName);                                    //проверка файла через чтение его в память и проверку первого блока
            ReadParamFromDisk packedParameters = new ReadParamFromDisk(Globals.fileName); //повторное чтение файла параметров

            //в память с инструментарием для работы с ним.
            unpackedParameters = new TickParamsAll(packedParameters); //получение распакованного массива
                                                                      //File.WriteAllBytes(Globals.fileName+".bin", unpackedParameters.inflatedParameters); //запись на диск
                                                                      //распакованного массива


            //scull_Furnaces_Main_Window.maxValueForCurrentOnYAxis.Text = mySettings.UpperLimitForCurrent;
            scull_Furnaces_Main_Window.maxValueForCurrentOnYAxis.DataContext = mySettings;
            scull_Furnaces_Main_Window.maxValueForVoltageOnYAxis.DataContext = mySettings;

            scull_Furnaces_Main_Window.begTimeOnXAxis.clockWatch.Alarm_On           = false; //не обнавлять график при начальной установке диапазона времени для отображения
            scull_Furnaces_Main_Window.endTimeOnXAxis.clockWatch.Alarm_On           = false; //не обнавлять график при начальной установке диапазона времени для отображения
            scull_Furnaces_Main_Window.begTimeForVoltageOnXAxis.clockWatch.Alarm_On = false;
            scull_Furnaces_Main_Window.endTimeForVoltageOnXAxis.clockWatch.Alarm_On = false;

            scull_Furnaces_Main_Window.begTimeOnXAxis.Ticks.Text           = mySettings.TimeLowerBoundaryForTheCurrent.ToString();
            scull_Furnaces_Main_Window.endTimeOnXAxis.Ticks.Text           = mySettings.TimeUpperBoundaryForTheCurrent.ToString();
            scull_Furnaces_Main_Window.begTimeForVoltageOnXAxis.Ticks.Text = mySettings.TimeLowerBoundaryForTheVoltage.ToString();
            scull_Furnaces_Main_Window.endTimeForVoltageOnXAxis.Ticks.Text = mySettings.TimeUpperBoundaryForTheVoltage.ToString();

            scull_Furnaces_Main_Window.begTimeOnXAxis.clockWatch.AlarmProcedure           += scull_Furnaces_Main_Window.setMinTimeValue;
            scull_Furnaces_Main_Window.endTimeOnXAxis.clockWatch.AlarmProcedure           += scull_Furnaces_Main_Window.setMaxTimeValue;
            scull_Furnaces_Main_Window.begTimeForVoltageOnXAxis.clockWatch.AlarmProcedure += scull_Furnaces_Main_Window.setMinTimeForVoltageValue;
            scull_Furnaces_Main_Window.endTimeForVoltageOnXAxis.clockWatch.AlarmProcedure += scull_Furnaces_Main_Window.setMaxTimeForVoltageValue;

            scull_Furnaces_Main_Window.momentOfTime.clockWatch.AlarmProcedure      += scull_Furnaces_Main_Window.setParameterValueOnTheTab;
            scull_Furnaces_Main_Window.momentOfTime.clockWatch.AlarmProcedure      += testAlarm;
            scull_Furnaces_Main_Window.begTimeOnXAxis.clockWatch.Alarm_On           = true; //обновлять график при изменении нижней границы диапазона времени
            scull_Furnaces_Main_Window.endTimeOnXAxis.clockWatch.Alarm_On           = true; //обновлять график при изменении верхней границы диапазона времени
            scull_Furnaces_Main_Window.begTimeForVoltageOnXAxis.clockWatch.Alarm_On = true;
            scull_Furnaces_Main_Window.endTimeForVoltageOnXAxis.clockWatch.Alarm_On = true;

            scull_Furnaces_Main_Window.unpackedParameters = this.unpackedParameters;
            scull_Furnaces_Main_Window.WindowStyle        = WindowStyle.ToolWindow;
            scull_Furnaces_Main_Window.Show();
            //Создаём табло с набором дискретных параметров и привязкой каждого из них к свойству parameterState
            //в обьекте класса ColorSource
            ParameterAllValues parameterDescription = null;

            foreach (var pair in ParameterData)
            {
                parameterDescription = pair.Value;
                if (parameterDescription.parameterType == ParameterType.дискретный)
                {
                    DiscretePlaque btnControl = new DiscretePlaque()
                    {
                        Content = parameterDescription.parameterName
                    };
                    btnControl.discreteNumber = pair.Key;                     // the key in the Dictionary remembered

                    ColorSource colorSourceForAParameter = new ColorSource(); //в свойстве parameterState этого объекта храниться состояние дискрета вкл/выкл
                    //опеределяющее цвет привязанного к нему Plaque, информационной таблички-кнопки.
                    parameterDescription.colorBinding.Source    = colorSourceForAParameter;
                    parameterDescription.colorBinding.Converter = colorSourceForAParameter;

                    btnControl.SetBinding(Button.BackgroundProperty, parameterDescription.colorBinding);
                    btnControl.Template = (ControlTemplate)scull_Furnaces_Main_Window.FindResource("MyBetterButtonTemplate");

                    scull_Furnaces_Main_Window.uniGrid.Children.Add(btnControl);
                }
            }

            //Устанаваливаем номер вкладки на окне из сохранённого значения, он будет обновлятся далее
            //автоматически через привязку BINDING к номеру вкладки в XAML окна

            scull_Furnaces_Main_Window._typeOfParameters.PropertyChanged += SelectThePageWithParameters;
            scull_Furnaces_Main_Window._typeOfParameters.PropertyChanged += testSelectPage;
            scull_Furnaces_Main_Window._typeOfParameters.theNumberOfTab   = mySettings.SelectedIndex;
            TimeMover.numberOfSecond = 0;
        }
Example #4
0
    static void Main(string[] s)
    {
        if (s.Length > 1 && File.Exists(s[1]))
        {
            Globals.fileName = s[1];
        }
        readAllTheBytes(Globals.fileName);
        //В переменной readValues находится адрес массива в памяти с данными из файла

        if (!(s.Length > 0 && Enum.IsDefined(typeof(ParameterName), s[0])))      //по названию параметра не выходит
        {
            try
            {
                Int32 theEnteredNumber;
                //parameterNumber = (ParameterName)Int32.Parse(s[0]);
                bool itIsANumber = Int32.TryParse(s[0], out theEnteredNumber);
                //проверим с помощью TryParse,
                //возможно,введён номер параметра вместо его символьного наименования

                if (itIsANumber & Enum.IsDefined(typeof(ParameterName), theEnteredNumber))
                {
                    parameterName = (ParameterName)theEnteredNumber;
                }
                else
                {
                    parameterName = ParameterName.Напряжение_дуги;
                    throw new Exception();
                }
            }
            catch (Exception e)
            {
                //Если введено неверное название параметра
                Console.WriteLine("Задайте имя(или № байта) параметра и исходный файл в командной строке!");
                Environment.Exit(0);
            }
        }

        else
        {
            parameterName = (ParameterName)Enum.Parse(typeof(ParameterName), s[0]);
        }
        Console.Write("Имя введённого параметра: {0} ", parameterName);
        Console.WriteLine("Тип параметра {0}", Constants.ParameterData[(int)(parameterName)].parameterType);

        if (s.Length > 1 && !File.Exists(s[1]))
        {
            Console.WriteLine("Отсутствует указанный файл параметров"); return;
        }
        if (s.Length > 2)
        {
            Console.WriteLine("Будем вводить стартовое время для выдачи параметра");
            try {
                Globals.startOfParameterOutput = TimeSpan.Parse(s[2]);
                Console.WriteLine("{0} --> {1}", s[2], Globals.startOfParameterOutput.ToString("c"));
            }
            catch (FormatException)
            {
                Console.WriteLine("{0}: Неправильный формат для начала времени выводв", s[2]);
            }
            catch (OverflowException)
            {
                Console.WriteLine("{0}: Overflow", s[2]);
            }
        }
        Globals.startTimeOfFileRecording  = new DateTime(Int32.Parse(Globals.fileName.Substring(0, 4)), Int32.Parse(Globals.fileName.Substring(4, 2)), Int32.Parse(Globals.fileName.Substring(6, 2)));
        Globals.startTimeOfFileRecording += Globals.deltaForStartingOfRecord;
        Console.WriteLine("Start time of writing to the file: {0:D}", Globals.startTimeOfFileRecording);

        // Would be better new TickParam:IEnumerator(string Globals.fileName)

        try
        {
            int FileMarkerIndex = 0;
            for (int i = 0; i < Constants.ParamsBlockLengthInBytes; i++)
            {
                FileMarkerIndex = 2 * i;
                if (i != readValues[FileMarkerIndex])
                {
                    throw new Exception();
                }
                //FileMarkerIndex++;
            }
            if (readValues[FileMarkerIndex + 2] != 0xFF || readValues[FileMarkerIndex + 3] != 0xFB)
            {
                throw new Exception();
            }
        }
        catch
        {
            MessageBox.Show("Неверная полная запись в начале файла!");
        }
        //File O.K, let's read it

        ReadParamFromDisk packedParameters   = new ReadParamFromDisk(Globals.fileName);
        TickParamsAll     unpackedParameters = new TickParamsAll(packedParameters);

                #if OUTPUT_TO_THE_SCREEN
        Console.WriteLine("Output to the screen from the fully inflated file of parameters");
        //выдадим всё в файл!
        Console.WriteLine("Длина массива = {0}", unpackedParameters.inflatedParameters.Length);
        //FileStream fs = File.Open(Globals.fileName+".txt",FileMode.Create);
        File.WriteAllBytes(Globals.fileName + ".bin", unpackedParameters.inflatedParameters);
        string   unitOfMeasure = (string)Constants.ParameterData[(int)(parameterName)].parameterUnit.ToString();
        DateTime realDateTime  = Globals.startTimeOfFileRecording + TimeSpan.FromSeconds(Globals.startOfParameterOutput.TotalSeconds);
        short    intAssembled;
        bool     stepMode = true;
        Console.WriteLine("Нажмите любую клавишу для пошагового чтения или ENTER для непрерывной выдачи");
        for (
            int iParam = (int)parameterName / (Constants.ParameterData[(int)(parameterName)].parameterType == ParameterType.аналоговый ? 1:10) + (int)Globals.startOfParameterOutput.TotalSeconds * Constants.ParamsBlockLengthInBytes;

            iParam < unpackedParameters.inflatedParameters.Length;

            iParam = iParam + Constants.ParamsBlockLengthInBytes)
        {
            //Console.WriteLine("Номер ячейки = {0}",iParam);
            //обеспечиваем построчную выдачу на экран
            if (stepMode)
            {
                if (Console.ReadKey(true).Key == ConsoleKey.Enter)
                {
                    stepMode = !stepMode;
                }
            }
            else
            if (Console.KeyAvailable && ((Console.ReadKey(true).Key == ConsoleKey.Enter) || (Console.ReadKey(true).Key == ConsoleKey.Spacebar)))
            {
                stepMode = !stepMode;
            }

            /*
             * for(int i=127;i<unpackedParameters.inflatedParameters.Length;i=i+Constants.ParamsBlockLengthInBytes)
             * Console.WriteLine( unpackedParameters.inflatedParameters[i]); */
            //Выдача на экран построчно заданного в командной строке параметра из заданного файла с заданного момента
            if (Constants.ParameterData[(int)(parameterName)].parameterType == ParameterType.аналоговый)
            {
                intAssembled = BitConverter.ToInt16(unpackedParameters.inflatedParameters, iParam);
                //Globals.swapBytes(ref intAssembled);
                switch (Constants.ParameterData[(int)(parameterName)].parameterUnit)
                {
                case ParameterUnit._:
                    unitOfMeasure = "";
                    break;

                case ParameterUnit.м3_ч:
                    unitOfMeasure = "м3/ч";
                    break;

                case ParameterUnit.мм_рт_ст:
                    if (intAssembled < 0)
                    {
                        unitOfMeasure = "мм рт.ст";
                        intAssembled &= 0x777;
                    }
                    else
                    {
                        unitOfMeasure = "мк";
                    }
                    break;
                }
                Console.WriteLine("Время с начала суток: {0}  Значение {1} : {2:N1}{3}", realDateTime, parameterName, (float)intAssembled / 10, unitOfMeasure);
            }
            else
            {
                bool onOff = ((byte)Constants.ParameterData[(int)(parameterName)].bitMask & unpackedParameters.inflatedParameters[iParam]) > 0;
                unitOfMeasure = "";
                Console.WriteLine("Время с начала суток: {0}  Значение {1} : {2:N1}{3}", realDateTime, parameterName, onOff, unitOfMeasure);
            }
            realDateTime = realDateTime.AddSeconds(1.0);
        }
                #endif
    }
Example #5
0
    public void Startup_Procedure(object x, System.EventArgs e)
    {
        Console.WriteLine("Запуск главной формы");

        Application app = Current;

        //Считываем с диска файл с параметрами,имя файла запомнено с помощью
        //механизма ApplicationSettingBase
        mySettings = new MyUserSettings();
        scull_Furnaces_Main_Window = new Scull_Furnaces_Main_Window();
        scull_Furnaces_Main_Window.InitializeComponent();
        //Устанавливаем имя считываемого файла из сохранённого значания, оно будет обновлятся
        //после диалога с пользователем
        scull_Furnaces_Main_Window._remembranceOfFileName.fileName = mySettings.FileName;
        //записываем его в глобальное поле как для доступа из консольной программы
        Globals.fileName = scull_Furnaces_Main_Window._remembranceOfFileName.fileName;
        WriteLine("Считанное имя файла : {0}", Globals.fileName);
        scull_Furnaces_Main_Window._remembranceOfFileName.PropertyChanged += rememberTheChosenFileName;

        Globals.readAllTheBytes(Globals.fileName);                                    //проверка файла через чтение его в память и проверку первого блока
        ReadParamFromDisk packedParameters = new ReadParamFromDisk(Globals.fileName); //повторное чтение файла параметров

        //в память с инструментарием для работы с ним.
        unpackedParameters = new TickParamsAll(packedParameters); //получение распакованного массива
                                                                  //File.WriteAllBytes(Globals.fileName+".bin", unpackedParameters.inflatedParameters); //запись на диск
                                                                  //распакованного массива


        //scull_Furnaces_Main_Window.maxValueForCurrentOnYAxis.Text = mySettings.UpperLimitForCurrent;
        scull_Furnaces_Main_Window.maxValueForCurrentOnYAxis.DataContext = mySettings;

        scull_Furnaces_Main_Window.begTimeOnXAxis.clockWatch.Alarm_On        = false; //не обнавлять график при начальной установке диапазона времени для отображения
        scull_Furnaces_Main_Window.endTimeOnXAxis.clockWatch.Alarm_On        = false; //не обнавлять график при начальной установке диапазона времени для отображения
        scull_Furnaces_Main_Window.begTimeOnXAxis.Ticks.Text                 = mySettings.TimeLowerBoundaryForTheCurrent.ToString();
        scull_Furnaces_Main_Window.endTimeOnXAxis.Ticks.Text                 = mySettings.TimeUpperBoundaryForTheCurrent.ToString();
        scull_Furnaces_Main_Window.begTimeOnXAxis.clockWatch.AlarmProcedure += scull_Furnaces_Main_Window.setMinTimeValue;
        scull_Furnaces_Main_Window.endTimeOnXAxis.clockWatch.AlarmProcedure += scull_Furnaces_Main_Window.setMaxTimeValue;
        scull_Furnaces_Main_Window.begTimeOnXAxis.clockWatch.Alarm_On        = true; //обновлять график при изменении нижней границы диапазона времени
        scull_Furnaces_Main_Window.endTimeOnXAxis.clockWatch.Alarm_On        = true; //обновлять график при изменении верхней границы диапазона времени

        scull_Furnaces_Main_Window.WindowStyle = WindowStyle.ToolWindow;
        scull_Furnaces_Main_Window.Show();

        ParameterAllValues parameterDescription = null;

        foreach (var pair in ParameterData)
        {
            parameterDescription = pair.Value;
            if (parameterDescription.parameterType == ParameterType.дискретный)
            {
                DiscretePlaque btnControl = new DiscretePlaque()
                {
                    Content = parameterDescription.parameterName
                };
                btnControl.discreteNumber = pair.Key; // the key in the Dictionary remembered
                                                      //Binding colorBindingForAParameter = new Binding("parameterState"); //to the parameterDesription !!!
                Binding     colorBindingForAParameter = parameterDescription.colorBinding;
                ColorSource colorSourceForAParameter  = new ColorSource();
                colorBindingForAParameter.Source = colorSourceForAParameter;
                //put the Binding into initial state, setting the parameterState in colorSourceForAParameter in accordance with the parameter value being read from disk

                colorBindingForAParameter.Converter = colorSourceForAParameter;

                btnControl.SetBinding(Button.BackgroundProperty, colorBindingForAParameter);
                btnControl.Template = (ControlTemplate)scull_Furnaces_Main_Window.FindResource("MyBetterButtonTemplate");
                //btnControl.discreteNumber - ?? how to define ? the number in  []

                scull_Furnaces_Main_Window.uniGrid.Children.Add(btnControl);
            }
        }

        //Устанаваливаем номер вкладки на окне из сохранённого значения, он будет обновлятся далее
        //автоматически через привязку BINDING к номеру вкладки в XAML окна

        scull_Furnaces_Main_Window._typeOfParameters.PropertyChanged += rememberThePageWithParameters;
        scull_Furnaces_Main_Window._typeOfParameters.theNumberOfTab   = mySettings.SelectedIndex;

        TimeMover.numberOfSecond = 1; //Начинаем просмотр дискретов с 1 секунды!
    }