Esempio n. 1
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;
        }
Esempio n. 2
0
        public async Task Update()
        {
            ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x0200, 5);

            Application.Current.Dispatcher.Invoke(() =>
            {
                SetValue(value);
            });
        }
Esempio n. 3
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);
        }
Esempio n. 4
0
        //TODO: make updateState for picon2
        public async Task UpdateState()
        {
            ushort[] value;
            {
                value = await RTUConnectionGlobal.GetDataByAddress(1, 0x8200, 61);
            }

            //ImportComplete(value);
        }
Esempio n. 5
0
 public async Task WriteAll()
 {
     uiExport.IsEnabled = uiImport.IsEnabled = false;
     {
         await RTUConnectionGlobal.SendDataByAddressAsync(1, 0x9108, Value);
     }
     ExportComplete(true);
     uiExport.IsEnabled = uiImport.IsEnabled = true;
 }
Esempio n. 6
0
        public async Task Update()
        {
            //ошибки модулей
            ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x1102, 1);

            Application.Current.Dispatcher.Invoke(() =>
            {
                SetAllFlags(value[0]);
            });
        }
Esempio n. 7
0
        public async Task UpdateState()
        {
            uiExport.IsEnabled = uiImport.IsEnabled = false;

            ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x9108, 2);


            ImportComplete(value);

            uiExport.IsEnabled = uiImport.IsEnabled = true;
        }
Esempio n. 8
0
        private async Task <ushort[]> ReadAll()
        {
            List <ushort> ushorts = new List <ushort>();

            for (ushort i = 0; i < 200; i += 100)
            {
                ushorts.AddRange(await RTUConnectionGlobal.GetDataByAddress(1, (ushort)(0x0208 + i), 100));
            }
            ushorts.AddRange(await RTUConnectionGlobal.GetDataByAddress(1, 0x0208 + 200, 86));

            return(ushorts.ToArray());
        }
Esempio n. 9
0
        private async void GetSignature()
        {
            uiSignature.IsEnabled = false;
            try
            {
                ushort[] res = await RTUConnectionGlobal.GetDataByAddress(1, (ushort)(0x0400), 52);

                ReadSignatureComplete(res);
            }
            catch (Exception exception)
            {
            }
            uiSignature.IsEnabled = true;
        }
Esempio n. 10
0
        private async Task ReadScheduleData(ushort startAddress)
        {
            var ushorts = new List <ushort>();

            for (ushort i = 0; i < 700; i += 100)
            {
                ushorts.AddRange(await RTUConnectionGlobal.GetDataByAddress(1, (ushort)(startAddress + i), 100));
            }

            ushorts.AddRange(await RTUConnectionGlobal.GetDataByAddress(1, (ushort)(startAddress + 700), 70));


            this.ImportComplete(ushorts.ToArray());
        }
Esempio n. 11
0
        public async Task UpdateState()
        {
            uiLogicConfigOpen.IsEnabled     =
                uiLogicConfigSave.IsEnabled = uiLogicExport.IsEnabled = uiLogicImport.IsEnabled = false;
            ushort[] value;
            {
                value = await RTUConnectionGlobal.GetDataByAddress(1, 0x8200, 61);
            }

            ImportComplete(value);

            uiLogicConfigOpen.IsEnabled     =
                uiLogicConfigSave.IsEnabled = uiLogicExport.IsEnabled = uiLogicImport.IsEnabled = true;
        }
Esempio n. 12
0
        public async Task ReadJournalPicon2()
        {
            Picon2EventsCollection.Clear();
            ushort[] Picon2JournalReportCountUshort = new ushort[1];
            Picon2JournalReportCountUshort = await RTUConnectionGlobal.GetDataByAddress(1, (ushort)0x4000, 1);

            byte Picon2JournalReportCountLOByte = LOBYTE(Picon2JournalReportCountUshort[0]);
            byte Picon2JournalReportCountHIByte = HIBYTE(Picon2JournalReportCountUshort[0]);

            for (int i = 0; i < Picon2JournalReportCountLOByte; i++)
            {
                this.Picon2EventsCollection.Add(new Picon2JournalEventRecord(await RTUConnectionGlobal.GetDataByAddress(1, (ushort)(0x4300 + i), 8)));
            }
            //todo: попробовать подогнать записи журнала под одни правила для всех устройств(не получится скорее всего)
        }
Esempio n. 13
0
        public async Task Update()
        {
            if (DeviceSelection.SelectedDevice == (int)DeviceSelectionEnum.DEVICE_PICON2)
            {
                try
                {
                    //ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x6000, 2);
                    //Application.Current.Dispatcher.Invoke(() =>
                    //{
                    //    SetJournalValue(value);

                    //});

                    //this.ReadJournalValue();
                }
                catch (Exception ex)
                {
                    ShowMessage(ex.Message, "Error", MessageBoxImage.Error);
                }
            }
            else
            {
                try
                {
                    ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x2001, 5727);

                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        SetJournalValue(value);
                    });

                    this.ReadJournalValue();
                }
                catch (Exception ex)
                {
                    ShowMessage(ex.Message, "Error", MessageBoxImage.Error);
                }
            }
            //if (this.StopWork != null)
            //{
            //    this.Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle, new Action(() =>
            //    {
            //        StopWork();
            //        StateTextBlock.Text = string.Empty;
            //    }));
            //}
        }
Esempio n. 14
0
        public async Task Update()
        {
            //if (_semaphoreSlim.CurrentCount == 0) return;
            //await _semaphoreSlim.WaitAsync();

            ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x0200, 5);

            Application.Current.Dispatcher.Invoke(() =>
            {
                SetValue(value);
            });

            //if (_semaphoreSlim.CurrentCount == 0)
            //{
            //    _semaphoreSlim.Release();
            //}
        }
Esempio n. 15
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);
            }
        }
Esempio n. 16
0
        public async Task Update()
        {
            //if (_semaphoreSlim.CurrentCount == 0) return;
            //await _semaphoreSlim.WaitAsync();
            ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x0300, 1);

            BitArray d = new BitArray(new int[] { value[0] });

            Application.Current.Dispatcher.Invoke(() =>
            {
                SetIndicators(d);
            });
            //if (_semaphoreSlim.CurrentCount == 0)
            //{
            //    _semaphoreSlim.Release();
            //}
        }
Esempio n. 17
0
        private async void uiImport_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                uiImport.IsEnabled = uiExport.IsEnabled = false;
                List <ushort> ushorts = new List <ushort>();
                ushorts.AddRange(await RTUConnectionGlobal.GetDataByAddress(1, 0x8000, 68));
                ushorts.AddRange(await RTUConnectionGlobal.GetDataByAddress(1, 0x8000 + 68, 60));
                uiImport.IsEnabled = uiExport.IsEnabled = true;
                ushort[] value = ushorts.ToArray();
                ImportComplete(value);
                Value = value;
            }
            catch

            {
            }
        }
Esempio n. 18
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);
        }
Esempio n. 19
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();
        }
Esempio n. 20
0
        public async Task Update()

        {
            //if (_semaphoreSlim.CurrentCount == 0) return;
            //await _semaphoreSlim.WaitAsync();
            if (DeviceSelection.SelectedDevice == (int)DeviceSelectionEnum.DEVICE_PICON2)
            {
                try
                {
                    ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x2100, 8);

                    if (value == null)
                    {
                        return;
                    }
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        SetTimeForPicon2(value);
                        uiChangeTime.IsEnabled = uiSystemTime.IsEnabled = true;
                    });
                }
                catch (Exception ex)
                {
                }
            }
            else
            {
                ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x1000, 16);

                Application.Current.Dispatcher.Invoke(() =>
                {
                    SetTime(value);
                    uiChangeTime.IsEnabled = uiSystemTime.IsEnabled = true;
                });
            }
            //if (_semaphoreSlim.CurrentCount == 0)
            //{
            //    _semaphoreSlim.Release();
            //}
        }
Esempio n. 21
0
        public async Task Update()
        {
            //if (_semaphoreSlim.CurrentCount == 0) return;
            //await _semaphoreSlim.WaitAsync();

            if (DeviceSelection.SelectedDevice == (int)DeviceSelectionEnum.DEVICE_PICON2)
            {
                try
                {
                    ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x0005, 4);

                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        SetPicon2States(value);
                    });
                }
                catch (Exception ex)
                { }
            }
            else
            {
                try
                {
                    ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x0005, 8);

                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        SetStates(value);
                    });
                }
                catch (Exception ex)
                { }
            }

            //if (_semaphoreSlim.CurrentCount == 0)
            //{
            //    _semaphoreSlim.Release();
            //}
        }
Esempio n. 22
0
        public async Task <ushort[]> ReadJournalValue()
        {
            //List<ushort> ushorts = new List<ushort>();
            //for (ushort i = 0; i < 3900; i += 100)
            //{
            //    ushorts.AddRange(await RTUConnectionGlobal.GetDataByAddress(1, (ushort)(0x2001 + i), 100));
            //}
            //ushorts.AddRange(await RTUConnectionGlobal.GetDataByAddress(1, 0x2001 + 3900, 10));

            //return ushorts.ToArray();

            List <ushort> ushorts = new List <ushort>();

            for (ushort i = 0; i < 5635; i += 92)
            {
                ushorts.AddRange(await RTUConnectionGlobal.GetDataByAddress(1, (ushort)(0x2001 + i), 92));
            }
            ushorts.AddRange(await RTUConnectionGlobal.GetDataByAddress(1, (ushort)(0x2001 + 5704), 23));


            return(ushorts.ToArray());
        }
Esempio n. 23
0
        public async Task Update()
        {
            //if (_semaphoreSlim.CurrentCount == 0) return;
            //await _semaphoreSlim.WaitAsync();
            if (DeviceSelection.SelectedDevice == (byte)DeviceSelectionEnum.DEVICE_PICON2)
            {
                ushort[] ConnectionModuleId;
                {
                    ConnectionModuleId = await RTUConnectionGlobal.GetDataByAddress(1, 0x3004, 1);
                }
                if ((byte)ConnectionModuleId[0] != 0xE0 && (byte)ConnectionModuleId[0] != 0xE1)
                {
                    return;
                }
                byte[] value = await RTUConnectionGlobal.ExecuteFunction12Async((byte)ConnectionModuleId[0], "Get Picon SignalLevel", 0x60);

                if (value == null)
                {
                    return;
                }
                Application.Current.Dispatcher.Invoke(() =>
                {
                    SetGsmPicon2(value);
                });
            }
            else
            {
                ushort[] value = await RTUConnectionGlobal.GetDataByAddress(1, 0x001F, 8);

                Application.Current.Dispatcher.Invoke(() =>
                {
                    SetGsm(value);
                });
            }
            //if (_semaphoreSlim.CurrentCount == 0)
            //{
            //    _semaphoreSlim.Release();
            //}
        }
Esempio n. 24
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);
            }
        }
Esempio n. 25
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);
            }
        }
Esempio n. 26
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);
            }
        }
Esempio n. 27
0
        /// <summary>
        /// Анализ модулей, прочитанных из устройства + их расстановка по местам
        /// </summary>
        private async void AnalyzeModulesFromDevice()
        {
            byte _firstModulePos;

            if (IsToggleCrate918Checked)
            {
                _firstModulePos = 0;
            }
            else
            {
                _firstModulePos = 1;
            }
            /// читаем модуль с верхом
            try
            {
                ushort[] upperModule = await RTUConnectionGlobal.GetDataByAddress(1, UPPER_MODULE_ADDRESS, 5);

                if (upperModule != null)
                {
                    byte[] byteArrayUpper    = ArrayExtension.UshortArrayToByteArray(upperModule);
                    string _typeAddressUpper = Converters.Convert.ConvertFromDecToHexStr(byteArrayUpper[1]);
                    byte   _typeUpper        = Converters.Convert.ConvertFromHexToDec((byte)Int32.Parse(_typeAddressUpper.First().ToString(), System.Globalization.NumberStyles.HexNumber));
                    byte   _addressUpper     = Converters.Convert.ConvertFromHexToDec((byte)Int32.Parse(_typeAddressUpper.Last().ToString(), System.Globalization.NumberStyles.HexNumber));
                    string upperName         = "Заглушка";
                    if (_typeUpper != 0)
                    {
                        if (_typeUpper == 0x0E)
                        {
                            //немного костыли, но че уж поделать, если таски возникают после того, как ниписано практически все
                            Config915Series cfg915 = new Config915Series(byteArrayUpper[5]);
                            if (cfg915.ModbusSpeed == 115200)
                            {
                                upperName = "MС915";
                            }
                            if (cfg915.ModbusSpeed == 19200)
                            {
                                upperName = "MС917";
                            }
                        }
                        if (_typeUpper == 0x0F)
                        {
                            upperName = "MС911";
                        }
                        this.ModuleListForUI[_addressUpper - _firstModulePos] = upperName;
                    }
                }
            }
            catch (Exception ex)
            {
                ShowMessage("При чтении запроса модуля связи с верхом произошла ошибка.", "Внимание", MessageBoxImage.Warning);
            }
            /// читаем модуль с низом
            try
            {
                ushort[] slaveCount = await RTUConnectionGlobal.GetDataByAddress(1, LOWER_MODULE_REQUEST_TO_SLAVES_COUNT_ADDRESS, 1);

                if (slaveCount[0] != 0)
                {
                    ushort[] lowerModule = await RTUConnectionGlobal.GetDataByAddress(1, LOWER_MODULE_ADDRESS, 5);

                    if (lowerModule != null)
                    {
                        byte[] byteArrayLower    = ArrayExtension.UshortArrayToByteArray(lowerModule);
                        string _typeAddressLower = Converters.Convert.ConvertFromDecToHexStr(byteArrayLower[1]);
                        byte   _typeLower        = Converters.Convert.ConvertFromHexToDec((byte)Int32.Parse(_typeAddressLower.First().ToString(), System.Globalization.NumberStyles.HexNumber));
                        byte   _addressLower     = Converters.Convert.ConvertFromHexToDec((byte)Int32.Parse(_typeAddressLower.Last().ToString(), System.Globalization.NumberStyles.HexNumber));
                        string lowerName         = "Заглушка";
                        if (_typeLower == 0x0E)
                        {
                            lowerName = "Люксметр";
                        }
                        this.ModuleListForUI[_addressLower - _firstModulePos] = lowerName;
                    }
                }
            }
            catch (Exception ex)
            {
                ShowMessage("При чтении запроса модуля связи с низом произошла ошибка.", "Внимание", MessageBoxImage.Warning);
            }
            ///модули

            for (int i = 0; i < RequestsFromDevice.Count(); i++)
            {
                this.ModuleListForUI[RequestsFromDevice[i].CrateAddress - _firstModulePos] = GetModuleNameFromType(RequestsFromDevice[i].Type, RequestsFromDevice[i].ParameterCount);
            }
            ///верх


            ///низ
        }
Esempio n. 28
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);
        }