コード例 #1
0
        public async Task WriteAll()
        {
            bool res;

            res = false;
            if (this.ValidateAutomationTime())
            {
                uiLogicConfigOpen.IsEnabled     =
                    uiLogicConfigSave.IsEnabled = uiLogicExport.IsEnabled = uiLogicImport.IsEnabled = false;

                {
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x8200, Value);

                    res = true;
                }
                ExportComplete(res);
                uiLogicConfigOpen.IsEnabled     =
                    uiLogicConfigSave.IsEnabled = uiLogicExport.IsEnabled = uiLogicImport.IsEnabled = true;
                //DataTransfer.SetTopInQueue(this, Accsess.Write, false);
            }
            else
            {
                this.ShowMessage(
                    "Не верное значение времени перехода в автоматический режим. Значение должно быть в пределах [5;1800]",
                    "Запись конфигурации логики в устройство", MessageBoxImage.Warning);
            }
        }
コード例 #2
0
        public async Task <bool> WriteContext()
        {
            //if (StartWork != null)
            //    Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle, new Action(StartWork));
            bool res = true;

            try
            {
                await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x0000, Value);

                {
                    Value = Converter.GetWordsFromBits(_writeValue);
                }
                await Dispatcher.BeginInvoke(new WriteComplete(CommandSetted), DispatcherPriority.SystemIdle, res);
            }


            catch (Exception e)
            {
                res = false;
            }
            if (StopWork != null)
            {
                await Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle, new Action(StopWork));
            }
            return(res);
        }
コード例 #3
0
        private async void ResetPLC()
        {
            //todo: PLC reset in picon2
            uiPLCReset.IsEnabled = false;
            if (DeviceSelection.SelectedDevice == (int)DeviceSelectionEnum.DEVICE_PICON2)
            {
                try
                {
                    await RTUConnectionGlobal.ExecuteFunction15Async(1, 0xFFFF, new bool[] { false, false, false, false, false, false, false, false,
                                                                                             false, false, false, false, false, false, false, false,
                                                                                             false, false, false, false, false, false, false, false });

                    ShowMessage("Устройство было успешно сброшено.", "Внимание", MessageBoxImage.Information);
                }
                catch (Exception ex)
                {
                    ShowMessage("Во время сброса устройства произошла ошибка.", "Ошибка", MessageBoxImage.Error);
                }
            }
            else
            {
                try
                {
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, (ushort)(0x0302),
                                                                     new ushort[] { 1 });

                    ShowMessage("Устройство было успешно сброшено.", "Внимание", MessageBoxImage.Information);
                }
                catch (Exception exception)
                {
                    ShowMessage("Во время сброса устройства произошла ошибка.", "Ошибка", MessageBoxImage.Error);
                }
            }
            uiPLCReset.IsEnabled = true;
        }
コード例 #4
0
        /// <summary>
        /// Запись конфигурации модуля связи в устройство
        /// </summary>
        private async void OnWriteRequestCommand()
        {
            Config = GenerateConfigForDevice();
            if (IsUpper)
            {
                try
                {
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, UPPER_ADDRESS, Config);

                    ShowMessage("Запись прошла успешно!", "Информация", MessageBoxImage.Information);
                }
                catch (Exception ex)
                {
                    ShowMessage("При записи конфигурации произошла ошибка!", "Внимание", MessageBoxImage.Warning);
                }
            }
            else
            {
                try
                {
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, LOWER_ADDRESS, Config);

                    ShowMessage("Запись прошла успешно!", "Информация", MessageBoxImage.Information);
                }
                catch (Exception ex)
                {
                    ShowMessage("При записи конфигурации произошла ошибка!", "Внимание", MessageBoxImage.Warning);
                }
            }
        }
コード例 #5
0
        private async void ClearJournal()
        {
            var win = new JournalPassword();

            win.ShowDialog();

            if (win.DialogResult == true)
            {
                ClearInProcess.Invoke();

                if (DeviceSelection.SelectedDevice == (byte)DeviceSelectionEnum.DEVICE_PICON2)
                {
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x4000, new ushort[] { 0 });

                    ClearCompleted.Invoke();
                    MessageBox.Show("Журнал очищен", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                else if (DeviceSelection.SelectedDevice == (byte)DeviceSelectionEnum.DEVICE_PICON_GS)
                {
                    ClearPiconGSJournal();
                }
                else
                {
                    ClearRunoJournal();
                }


                //Application.Current.MainWindow.Cursor = Cursors.Arrow;
            }
            else
            {
                MessageBox.Show("Неверный пароль!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
コード例 #6
0
        public async Task ClearAll()
        {
            for (int i = 0; i < 770; i++)
            {
                NullValue[i] = 0xFFFF;
            }

            uiExport.IsEnabled = uiImport.IsEnabled = uiOpen.IsEnabled = uiSave.IsEnabled = uiClearAll.IsEnabled = false;
            {
                try
                {
                    ushort baseAddr = 0;
                    if (Name == "uiLightingSchedule")
                    {
                        baseAddr = 0x8500;
                    }

                    if (Name == "uiBacklightSchedule")
                    {
                        baseAddr = 0x8802;
                    }
                    if (Name == "uiIlluminationSchedule")
                    {
                        baseAddr = 0x8B04;
                    }

                    if (Name == "uiEnergySchedule")
                    {
                        baseAddr = 0x8E06;
                    }


                    for (ushort i = 0; i < 700; i += 60)
                    {
                        var r = NullValue.Skip(i).Take(60).ToArray();
                        await RTUConnectionGlobal.SendDataByAddressAsync(1,
                                                                         (ushort)(baseAddr + i), r);
                    }

                    await RTUConnectionGlobal.SendDataByAddressAsync(1, (ushort)(baseAddr + 720), NullValue.Skip(720).Take(50).ToArray());


                    await ReadScheduleData(baseAddr);

                    UpdateBinding();
                    await UpdateState();

                    ExportComplete(true);
                }


                catch
                {
                    ExportComplete(false);
                }
            }
            uiExport.IsEnabled = uiImport.IsEnabled = uiOpen.IsEnabled = uiSave.IsEnabled = uiClearAll.IsEnabled = true;
        }
コード例 #7
0
        private async void uiExport_Click(object sender, RoutedEventArgs e)
        {
            uiImport.IsEnabled = uiExport.IsEnabled = false;
            await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x8000, Value.Skip(0).Take(68).ToArray());

            await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x8000 + 68, Value.Skip(68).Take(60).ToArray());

            ExportComplete(true);
        }
コード例 #8
0
 public async Task WriteAll()
 {
     uiExport.IsEnabled = uiImport.IsEnabled = false;
     {
         await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x9108, Value);
     }
     ExportComplete(true);
     uiExport.IsEnabled = uiImport.IsEnabled = true;
 }
コード例 #9
0
        /// <summary>
        /// Удаление подчиненного устройства
        /// </summary>
        private async void OnDeleteSlaveCommand()
        {
            try
            {
                ushort[] LRC = new ushort[] { 0 };
                await RTUConnectionGlobal.SendDataByAddressAsync(1, LOWER_MODULE_REQUEST_TO_SLAVES_COUNT_ADDRESS, LRC);

                ushort[] req915lower = new ushort[] { 0, 0, 0, 0 };
                await RTUConnectionGlobal.SendDataByAddressAsync(1, LOWER_MODULE_ADDRESS, req915lower);

                ShowMessage("Удаление запроса прошло успешно.", "Информация", MessageBoxImage.Information);
            }
            catch (Exception ex)
            {
                ShowMessage("Произошла ошибка.", "Внимание", MessageBoxImage.Warning);
            }
        }
コード例 #10
0
        public async Task <bool> WriteContext()
        {
            bool res = false;

            Value = new[] { _resultedValueUshort };
            try
            {
                Value = this.Value;

                Value = this.Value;
                await RTUConnectionGlobal.SendDataByAddressAsync(1, _addressToWrite, Value);

                res = true;
            }
            catch
            {
            }

            return(res);
        }
コード例 #11
0
        private async void ClearPiconGSJournal()
        {
            uiClear.IsEnabled = false;
            uiClear.Content   = "Ожидайте";



            await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x2000, new ushort[] { 1 });

            ushort[] zeros = new ushort[100];
            for (ushort i = 0; i < 4600; i += 100)
            {
                await RTUConnectionGlobal.SendDataByAddressAsync(1, (ushort)(0x2001 + i), zeros);
            }
            MessageBox.Show("Журнал очищен", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);

            uiClear.IsEnabled = true;
            uiClear.Content   = "Очистить";

            ClearCompleted.Invoke();
        }
コード例 #12
0
        /// <summary>
        /// Запись запросов в устройство
        /// </summary>
        private async void OnWriteToDeviceCommand()
        {
            try
            {
                ushort[] RC = new ushort[] { RequestCount };
                await RTUConnectionGlobal.SendDataByAddressAsync(1, REQUEST_COUNT_ADDRESS, RC);

                //заглушка
                //RequestsToWrite = RequestsFromDevice;
                ushort currentAddress = MODULE_REQUEST_START_ADDRESS;
                for (byte i = 0; i < RC[0]; i++)
                {
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, currentAddress, RequestsToWrite[i].RequestToDevice);

                    currentAddress += 4;
                }
                ShowMessage("Запись прошла успешно!", "Информация", MessageBoxImage.Information);
            }
            catch (Exception ex)
            {
                ShowMessage("При записи запросов произошла ошибка.", "Внимание", MessageBoxImage.Warning);
            }
        }
コード例 #13
0
        private async void uiChannel_WriteValue(object sender, List <bool> value)
        {
            if (IsEnabled)
            {
                //if (_semaphoreSlim.CurrentCount == 0) return;
                // await _semaphoreSlim.WaitAsync();

                var tmp = new List <bool>();
                if (sender.Equals(uiChannel1))
                {
                    var val = value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        val[0], false, val[2], val[1]
                    });
                    var tmp1 = uiChannel2.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel3.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel4.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel5.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel6.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel7.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel8.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                }
                else if (sender.Equals(uiChannel2))
                {
                    var tmp1 = uiChannel1.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    var val = value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        val[0], false, val[2], val[1]
                    });
                    tmp1 = uiChannel3.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel4.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel5.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel6.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel7.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel8.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                }
                else if (sender.Equals(uiChannel3))
                {
                    var tmp1 = uiChannel1.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel2.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    var val = value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        val[0], false, val[2], val[1]
                    });
                    tmp1 = uiChannel4.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel5.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel6.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel7.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel8.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                }
                else if (sender.Equals(uiChannel4))
                {
                    var tmp1 = uiChannel1.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel2.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel3.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    var val = value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        val[0], false, val[2], val[1]
                    });
                    tmp1 = uiChannel5.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel6.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel7.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel8.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                }
                else if (sender.Equals(uiChannel5))
                {
                    var tmp1 = uiChannel1.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel2.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel3.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel4.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    var val = value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        val[0], false, val[2], val[1]
                    });
                    tmp1 = uiChannel6.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel7.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel8.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                }
                else if (sender.Equals(uiChannel6))
                {
                    var tmp1 = uiChannel1.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel2.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel3.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel4.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel5.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    var val = value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        val[0], false, val[2], val[1]
                    });
                    tmp1 = uiChannel7.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel8.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                }
                else if (sender.Equals(uiChannel7))
                {
                    var tmp1 = uiChannel1.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel2.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel3.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel4.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel5.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel6.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    var val = value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        val[0], false, val[2], val[1]
                    });
                    tmp1 = uiChannel8.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                }
                else if
                (sender.Equals(uiChannel8))
                {
                    var tmp1 = uiChannel1.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel2.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel3.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel4.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel5.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel6.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    tmp1 = uiChannel7.Value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        tmp1[0], false, tmp1[2], tmp1[1]
                    });
                    var val = value.GetRange(3, 3);
                    tmp.AddRange(new List <bool> {
                        val[0], false, val[2], val[1]
                    });
                }


                await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x0000, Converter.GetWordsFromBits(tmp));


                _writeValue = tmp;

                //if (_semaphoreSlim.CurrentCount == 0)
                //{
                //    _semaphoreSlim.Release();
                //}
                //DataTransfer.SetTopInQueue(this, Accsess.Write, false);
            }
        }
コード例 #14
0
        /// <summary>
        /// Запись запросов для люксметра (обожаю, когда вылазят новые требования, когда я уже всю логику взаимодействия продумал)
        /// </summary>
        /// <param name="_pos"></param>
        public async void WriteLuxmetrRequest(int _pos)
        {
            List <byte>     byteArr      = new List <byte>();
            List <ushort>   confToDevice = new List <ushort>();
            Config915Series conf915      = new Config915Series(115200, false, false, false, false);

            byteArr.Add(100);
            byteArr.Add((byte)((0x0E << 4) + _pos));
            confToDevice.Add(ArrayExtension.ByteArrayToUshortArray(byteArr.ToArray()).First());
            confToDevice.Add(200);
            confToDevice.Add(conf915.Config);
            confToDevice.Add(40);
            confToDevice.Add(20);

            ushort[] req915lower = confToDevice.ToArray();

            byteArr.Clear();
            confToDevice.Clear();

            //запрос для люксметра, пишется в область памяти запросов к подчиненным устройствам
            byteArr.Add(0x00); //период
            byteArr.Add(0x01); //адрес+тип модуля
            byteArr.Add(0x00); //команда
            byteArr.Add(0x00); //адрес пар-ра в модуле 1
            byteArr.Add(0x00); //адрес пар-ра в модуле 2
            byteArr.Add(0x06); //адрес пар-ра в базе 1
            byteArr.Add(0x40); //ажрес пар-ра в базе 2
            byteArr.Add(0x01); //число пар-ров

            byte[] byteArray = byteArr.ToArray();

            ArrayExtension.SwapArrayItems(ref byteArray);

            confToDevice.AddRange(ArrayExtension.ByteArrayToUshortArray(byteArray));

            ushort[]      reqLux = confToDevice.ToArray();
            ModuleRequest mr     = new ModuleRequest(reqLux);

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("Будет произведена запись со следующими параметрами:");
            sb.AppendLine("Модуль связи: МС915 с низом на позицию " + _pos.ToString());
            sb.AppendLine("Ожидание ответа: 200 (*0,5 мс)");
            sb.AppendLine("Скорость: 115200");
            sb.AppendLine("Биты данных: 8 бит");
            sb.AppendLine("Паритет: нечет");
            sb.AppendLine("Паритет: нет");
            sb.AppendLine("Число стоп битов: 1 бит");
            sb.AppendLine("Таймаут ввода/вывода: 100 (*0,1 мс)");
            sb.AppendLine("Включение передачи: 40 (*0,1 мс)");
            sb.AppendLine("Выключение передачи: 20 (*0,1 мс)");

            sb.AppendLine("Также будет добавлен запрос к подчиненному устройтсву(люксметру):");
            sb.AppendLine(mr.UIRequest);
            sb.AppendLine("Продолжить?");

            if (MessageBox.Show(sb.ToString(), "Внимание", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
            {
                try
                {
                    ushort[] LRC = new ushort[] { 1 };//договор был изначально на одно устройство, так что ничего придумывать не буду
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, LOWER_MODULE_REQUEST_TO_SLAVES_COUNT_ADDRESS, LRC);

                    Thread.Sleep(100);
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, LOWER_MODULE_ADDRESS, req915lower);

                    Thread.Sleep(100);
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, SLAVE_MODULE_REQUEST_START_ADDRESS, reqLux);

                    Thread.Sleep(100);
                    ShowMessage("Запись произведена.", "Информация", MessageBoxImage.Information);
                }
                catch
                {
                    ShowMessage("При записи в устройство произошла ошибка.", "Внимение", MessageBoxImage.Warning);
                }
            }
            else
            {
                ShowMessage("Запись не была произведена", "Информация", MessageBoxImage.Information);
            }
        }
コード例 #15
0
        public async Task <bool> WriteContext()
        {
            //todo: посмотреть отображение времени в окне (отображает на час больше, чем реально), может зимнее время или еще чего
            if (_isSystemTime)
            {
                this._clock[1] = DateTime.Now;
            }
            else
            {
                var timeToWrite =
                    (InnerTime)this.Dispatcher.Invoke(new WriteTimeEventHandler(WriteTime), this._clock[0]);
                if (timeToWrite == null)
                {
                    uiChangeTime.IsEnabled = uiSystemTime.IsEnabled = true;
                    return(false);
                }
                var tmp = this._clock;

                this._clock[1] =
                    new DateTime(timeToWrite.Year == null ? tmp[1].Year : Convert.ToInt32(timeToWrite.Year),
                                 timeToWrite.Month == null ? tmp[1].Month : Convert.ToInt32(timeToWrite.Month),
                                 timeToWrite.Day == null ? tmp[1].Day : Convert.ToInt32(timeToWrite.Day),
                                 timeToWrite.Hour == null ? tmp[1].Hour : Convert.ToInt32(timeToWrite.Hour),
                                 timeToWrite.Minute == null ? tmp[1].Minute : Convert.ToInt32(timeToWrite.Minute),
                                 timeToWrite.Second == null ? tmp[1].Second : Convert.ToInt32(timeToWrite.Second));
            }

            if (DeviceSelection.SelectedDevice == (int)DeviceSelectionEnum.DEVICE_PICON2)
            {
                DateTimeTypePicon2();
            }

            else
            {
                DateTimeType();
            }



            bool res = true;

            try
            {
                if (DeviceSelection.SelectedDevice == (int)DeviceSelectionEnum.DEVICE_PICON2)
                {
                    //await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x2100, timeUshorts);
                    for (ushort i = 0; i < 7; i += 1)
                    {
                        var r = timeUshorts.Skip(i).Take(1).ToArray();
                        await RTUConnectionGlobal.SendDataByAddressAsync(1,
                                                                         (ushort)(0x2100 + i), r);
                    }
                }
                //await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x2100, timeUshorts);



                else
                {
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x1000, timeUshorts);
                }
            }
            catch (Exception e)
            {
                res = false;
            }

            return(res);
        }