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); } }
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); }
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; }
/// <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); } } }
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); } }
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; }
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); }
public async Task WriteAll() { uiExport.IsEnabled = uiImport.IsEnabled = false; { await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x9108, Value); } ExportComplete(true); uiExport.IsEnabled = uiImport.IsEnabled = true; }
/// <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); } }
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); }
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(); }
/// <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); } }
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); } }
/// <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); } }
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); }