Exemplo n.º 1
0
        private void toolStripButton1_Click(object sender, EventArgs e) // ЗАПУСК ОПРОСА
        {
            if (LabelPort.Text != "null")                               // Проверяем что порт установлен
            {
                if (CounterPage.TabCount != 1)
                {
                    WorkOn = true;                       // Меняем флаг работы опроса
                    SaveLatestPort.Save(LabelPort.Text); // Сохраняем порт в файл
                    WriteGoodWork();
                    toolStripButton1.Enabled = false;
                    toolStripButton2.Enabled = true;
                    LabelPort.Enabled        = false;
                    NewCounter[] ChildF = new NewCounter[CounterPage.TabCount - 1];
                    for (int i = 1; i < CounterPage.TabCount; i++)
                    {
                        ChildF[i - 1] = (NewCounter)CounterPage.TabPages[i].Controls[0];
                    }

                    _Work = new InterrogationСounter(LabelPort.Text);
                    tasks.Add(Task.Factory.StartNew(() => _Work.Request(ChildF,
                                                                        (AmountCounter)CounterPage.TabPages[0].Controls[0])));
                }
                else
                {
                    MessageBox.Show("Нет счетчиков в очереди на опрос", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                PortProperties();
                MessageBox.Show("Проверьте подключение кабеля и соответствие наименования выбранного порта, повторите попытку запуска", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemplo n.º 2
0
        public void Inquiry(string IDCounter, NewCounter Current) // Функция запроса тока и напряжения
        {
            try
            {
                AllRequsted = true;
                byte[] ByteMassiv = new byte[5 + IDCounter.Length]; // Формирование первого запроса в зависимости от модели счетчика
                ByteMassiv[0] = 0x2F;
                ByteMassiv[1] = 0x3F;
                for (int j = 2; j < IDCounter.Length + 2; j++)
                {
                    ByteMassiv[j] = (byte)IDCounter[j - 2];
                }

                ByteMassiv[IDCounter.Length + 2] = 0x21;
                ByteMassiv[IDCounter.Length + 3] = 0x0D;
                ByteMassiv[IDCounter.Length + 4] = 0x0A;

                RequestWithoutWrite(ByteMassiv);                                                                                               // Первый запрос
                RequestWithoutWrite(ByteMassiv = new byte[] { 0x06, 0x30, 0x35, 0x31, 0x0D, 0x0A });                                           // Второй запрос
                RequestWithoutWrite(ByteMassiv = new byte[] { 0x01, 0x52, 0x31, 0x02, 0x49, 0x44, 0x45, 0x4E, 0x54, 0x28, 0x29, 0x03, 0x4D }); // Запрос спецификаций счетчика
                RequestWithoutWrite(ByteMassiv = new byte[] { 0x01, 0x52, 0x31, 0x02, 0x53, 0x4E, 0x55, 0x4D, 0x42, 0x28, 0x29, 0x03, 0x5E }); // Третий запрос серийного номера
                RequestWithoutWrite(ByteMassiv = new byte[] { 0x01, 0x52, 0x31, 0x02, 0x49, 0x44, 0x50, 0x41, 0x53, 0x28, 0x29, 0x03, 0x4A }); // запрос идентификатора

                RequestWithWrite(ByteMassiv = new byte[]
                {
                    0x01, 0x52, 0x31, 0x02, 0x43, 0x55, 0x52, 0x52, 0x45, 0x28, 0x29, 0x03, 0x5A
                }, Current, 0); // Четвертый запрос тока
                RequestWithWrite(ByteMassiv = new byte[]
                {
                    0x01, 0x52, 0x31, 0x02, 0x56, 0x4F, 0x4C, 0x54, 0x41, 0x28, 0x29, 0x03, 0x5F
                }, Current, 1); // Пятый запрос напряжения
                RequestWithWrite(ByteMassiv = new byte[]
                {
                    0x01, 0x52, 0x31, 0x02, 0x43, 0x4F, 0x52, 0x49, 0x55, 0x28, 0x29, 0x03, 0x5B
                }, Current, 2);                                           // Запрос косинуса FI

                ByteMassiv = new byte[] { 0x01, 0x42, 0x30, 0x03, 0x75 }; // Шестой запрос прощание
                _serialPort.Write(ByteMassiv, 0, ByteMassiv.Length);
                Thread.Sleep(600);
                ByteMassiv = new byte[_serialPort.ReadBufferSize];
                ByteMassiv = null;
            }
            catch
            {
                DelegateWriteException D1 = Current.WriteException;
                Current.Invoke(D1);
                AllRequsted = false;
                Thread.Sleep(500);
            }
        }
Exemplo n.º 3
0
        public void RequestWithWrite(byte[] ByteMassiv, NewCounter Current, int CurOrVolOrCos) // Работа опроса с записью результата
        {
            _serialPort.Write(ByteMassiv, 0, ByteMassiv.Length);
            Thread.Sleep(600);
            ByteMassiv = new byte[_serialPort.ReadBufferSize];
            _serialPort.Read(ByteMassiv, 0, ByteMassiv.Length);

            ParseIncomingMessage(System.Text.Encoding.UTF8.GetString(ByteMassiv), CurOrVolOrCos); // Записываем результаты в массив
            DelegateWriteCurAndVol D1 = Current.WriteIndications;

            Current.Invoke(D1, Indications, CurOrVolOrCos);                                                  // Записываем результаты на форму

            if (CurOrVolOrCos == 2)                                                                          // Если это последний запрос, записываем данные в базу данных
            {
                Serialization _WRITE = new Serialization();                                                  // Создаем рабочий класс записи
                Task.Factory.StartNew(() => _WRITE.WriteToDataBase(Indications, Int16.Parse(Current.Name))); // Открываем в новом потоке
            }
        }
Exemplo n.º 4
0
 private void Ok_Click(object sender, EventArgs e) // Сохраняем состояние
 {
     for (int i = 0; i < 10; i++)
     {
         if (Selected[i])
         {
             if (!CheckAvailability(i + 1))
             {
                 NewCounter childFrm = new NewCounter((i + 1).ToString(), (frmMain)Owner);
                 _Counters.TabPages.Add(childFrm.Name, childFrm.Text);
                 childFrm.Parent = _Counters.TabPages[_Counters.TabCount - 1];
             }
         }
         else
         {
             if (CheckAvailability(i + 1))
             {
                 _Counters.TabPages.RemoveByKey((i + 1).ToString());
             }
         }
     }
     Close();
 }
 private void button1_Click(object sender, EventArgs e) // Кнопка применить
 {
     if (checkedListBox.CheckedItems.Count != 0)
     {
         try
         {
             for (int i = 0; i < checkedListBox.CheckedItems.Count; i++)
             {
                 Chouse = (NewCounter)_Counters.TabPages[checkedListBox.CheckedIndices[i] + 1].Controls[0];
                 Chouse.SetSetiings(Double.Parse(textBox1.Text), Double.Parse(textBox2.Text));
             }
         }
         catch
         {
             MessageBox.Show("Проверьте корректность введенных чисел", "Ошибка", MessageBoxButtons.OK,
                             MessageBoxIcon.Error);
         }
     }
     else
     {
         MessageBox.Show("Выберите хотя бы один счетчик", "Ошибка", MessageBoxButtons.OK,
                         MessageBoxIcon.Error);
     }
 }
Exemplo n.º 6
0
 void AddNewCounter(NewCounter childFrm) // Добавление счетчика на вкладку
 {
     CounterPage.TabPages.Add(childFrm.Name, childFrm.Text);
     childFrm.Parent = CounterPage.TabPages[CounterPage.TabCount - 1];
 }