private void TrackerConnectPannel_saveConfigEvent(object sender, EventArgs e)
        {
            var parser    = new TrackerParserData();
            var converter = new StructureBinaryConverter();
            var data      = new List <byte>();

            data.Add((int)TrackerTypeData.TypePacketData.Request);
            data.Add(0); // size packet L byte
            data.Add(0); // size packet H byte
            data.Add((int)TrackerTypeData.TypeMessage.SettignsWrite);
            data.Add(0); // Param count
            /* gsm */
            var settingsGsm = new TrackerStructureGsm();

            settingsGsm.PinCode     = Encoding.Default.GetBytes(_viewModel.SettingsModel.ApnPinCode);
            settingsGsm.Apn         = Encoding.Default.GetBytes(_viewModel.SettingsModel.Apn);
            settingsGsm.ApnUser     = Encoding.Default.GetBytes(_viewModel.SettingsModel.ApnLogin);
            settingsGsm.ApnPassword = Encoding.Default.GetBytes(_viewModel.SettingsModel.ApnPassword);
            data.AddRange(parser.addParam(new DataItemParam {
                Key = TrackerTypeData.KeyParameter.SettingsGsm, Type = typeof(byte[]), Data = converter.Serialize(settingsGsm)
            }));
            /* oneWire*/
            var settingsOneWire = new TrackerStructureSettingsOneWire();

            settingsOneWire.Sensor1IsEnabled     = _viewModel.SettingsModel.OneWireSettingsModelList[0].IsEnable;
            settingsOneWire.Sensor1_Code         = Encoding.Default.GetBytes(_viewModel.SettingsModel.OneWireSettingsModelList[0].HexCode);
            settingsOneWire.Sensor1_Name         = Encoding.Default.GetBytes(_viewModel.SettingsModel.OneWireSettingsModelList[0].SensorName);
            settingsOneWire.Sensor1_AlarmZoneMax = _viewModel.SettingsModel.OneWireSettingsModelList[0].UpperAlarmZone;
            settingsOneWire.Sensor1_AlarmZoneMin = _viewModel.SettingsModel.OneWireSettingsModelList[0].LowerAlarmZone;
            settingsOneWire.Sensor2IsEnabled     = _viewModel.SettingsModel.OneWireSettingsModelList[1].IsEnable;
            settingsOneWire.Sensor2_Code         = Encoding.Default.GetBytes(_viewModel.SettingsModel.OneWireSettingsModelList[1].HexCode);
            settingsOneWire.Sensor2_Name         = Encoding.Default.GetBytes(_viewModel.SettingsModel.OneWireSettingsModelList[1].SensorName);
            settingsOneWire.Sensor2_AlarmZoneMax = _viewModel.SettingsModel.OneWireSettingsModelList[1].UpperAlarmZone;
            settingsOneWire.Sensor2_AlarmZoneMin = _viewModel.SettingsModel.OneWireSettingsModelList[1].LowerAlarmZone;
            settingsOneWire.Sensor3IsEnabled     = _viewModel.SettingsModel.OneWireSettingsModelList[2].IsEnable;
            settingsOneWire.Sensor3_Code         = Encoding.Default.GetBytes(_viewModel.SettingsModel.OneWireSettingsModelList[2].HexCode);
            settingsOneWire.Sensor3_Name         = Encoding.Default.GetBytes(_viewModel.SettingsModel.OneWireSettingsModelList[2].SensorName);
            settingsOneWire.Sensor3_AlarmZoneMax = _viewModel.SettingsModel.OneWireSettingsModelList[2].UpperAlarmZone;
            settingsOneWire.Sensor3_AlarmZoneMin = _viewModel.SettingsModel.OneWireSettingsModelList[2].LowerAlarmZone;
            settingsOneWire.Sensor4IsEnabled     = _viewModel.SettingsModel.OneWireSettingsModelList[3].IsEnable;
            settingsOneWire.Sensor4_Code         = Encoding.Default.GetBytes(_viewModel.SettingsModel.OneWireSettingsModelList[3].HexCode);
            settingsOneWire.Sensor4_Name         = Encoding.Default.GetBytes(_viewModel.SettingsModel.OneWireSettingsModelList[3].SensorName);
            settingsOneWire.Sensor4_AlarmZoneMax = _viewModel.SettingsModel.OneWireSettingsModelList[3].UpperAlarmZone;
            settingsOneWire.Sensor4_AlarmZoneMin = _viewModel.SettingsModel.OneWireSettingsModelList[3].LowerAlarmZone;
            /* trackconf */
            var settingsTrackConf = new TrackerStructureSettingsTrack();

            settingsTrackConf.MaxDistance         = (UInt16)_viewModel.SettingsModel.MaxDistanceBetweenTwoPoints;
            settingsTrackConf.MaxHeading          = (UInt16)_viewModel.SettingsModel.MaxHeading;
            settingsTrackConf.AccelThresholdSleep = (byte)_viewModel.SettingsModel.AccelerationThresholdDetermMotion;
            settingsTrackConf.StopToMoveSleep     = (UInt16)_viewModel.SettingsModel.MinSpeedForDetectionMotion;
            settingsTrackConf.MoveToStopSleep     = (UInt16)_viewModel.SettingsModel.MaxSpeedForDetectionParking;
            settingsTrackConf.MaxStendingTime     = (UInt16)_viewModel.SettingsModel.MaxStendingTime;
            settingsTrackConf.MaxSpeep            = (UInt16)_viewModel.SettingsModel.MaxDistanceBetweenTwoPoints;
            settingsTrackConf.MinSpeep            = (UInt16)_viewModel.SettingsModel.MaxDistanceBetweenTwoPoints;
            settingsTrackConf.PosAccel            = (UInt16)_viewModel.SettingsModel.MaxDistanceBetweenTwoPoints;
            settingsTrackConf.NegAccel            = (UInt16)_viewModel.SettingsModel.MaxDistanceBetweenTwoPoints;
            settingsTrackConf.IgnType             = 0;// (UInt16)_viewModel.SettingsModel.MaxDistanceBetweenTwoPoints;
            settingsTrackConf.IgnThreshold        = (UInt16)_viewModel.SettingsModel.MaxDistanceBetweenTwoPoints;

            /* finalize packet, len crc and another */
            data[(int)TrackerTypeData.PacketField.PacketLenByteL]        = (byte)(data.Count & 0xFF);
            data[(int)TrackerTypeData.PacketField.PacketLenByteH]        = (byte)((data.Count & 0xFF00) >> 8);
            data[(int)TrackerTypeData.PacketField.PacketParamCountIndex] = 2;
            var crc      = CrcCalc.Crc16(data.ToArray());
            var crcArray = BitConverter.GetBytes(crc);

            data.AddRange(crcArray);

            _viewModel.ConnectViewModel.CommandDataBuf.Add(new ConnectPanelViewModel.CommandData("writeSettings", data.ToArray()));
        }
Esempio n. 2
0
        private void InsertSettingsResult(TrackerParserDataAbstract.ParserResult data, MainViewModel viewModel)
        {
            foreach (var i in data.data)
            {
                try
                {
                    switch (i.Key)
                    {
                    case TrackerTypeData.KeyParameter.SettingsGsm:
                        Application.Current.Dispatcher.Invoke(() =>
                        {
                            TrackerStructureGsm settingsGsm     = converter.Deserialize <TrackerStructureGsm>((byte[])i.Data);
                            viewModel.SettingsModel.ApnPinCode  = Encoding.ASCII.GetString(settingsGsm.PinCode).Trim('\0');
                            viewModel.SettingsModel.Apn         = Encoding.ASCII.GetString(settingsGsm.Apn).Trim('\0');
                            viewModel.SettingsModel.ApnLogin    = Encoding.ASCII.GetString(settingsGsm.ApnUser).Trim('\0');
                            viewModel.SettingsModel.ApnPassword = Encoding.ASCII.GetString(settingsGsm.ApnPassword).Trim('\0');
                            var operatorApn = viewModel.SettingsModel.Apn.ToUpper();
                            if (operatorApn.Contains("MTS"))
                            {
                                viewModel.SettingsModel.OperatorListIndex = (int)OperatorType.MTS;
                            }
                            else if (operatorApn.Contains("BELLINE"))
                            {
                                viewModel.SettingsModel.OperatorListIndex = (int)OperatorType.Beeline;
                            }
                            else if (operatorApn.Contains("MEGAFON"))
                            {
                                viewModel.SettingsModel.OperatorListIndex = (int)OperatorType.Megafon;
                            }
                            else if (operatorApn.Contains("TELE2"))
                            {
                                viewModel.SettingsModel.OperatorListIndex = (int)OperatorType.Tele2;
                            }
                            else
                            {
                                viewModel.SettingsModel.OperatorListIndex = (int)OperatorType.Custom;
                            }
                        });
                        //App
                        break;

                    case TrackerTypeData.KeyParameter.SettingsServers:
                        Application.Current.Dispatcher.Invoke(() =>
                        {
                            var settingsCon  = converter.Deserialize <TrackerStructureSettingsConnection>((byte[])i.Data);
                            var connectFirst = viewModel.SettingsModel.ServersConnectionModel;
                            /* first */
                            connectFirst.ProtocolTypeIndex = settingsCon.ProtocolType_0;
                            connectFirst.IpDnsAddress      = Encoding.ASCII.GetString(settingsCon.ConnectAddr_0).Trim('\0');
                            connectFirst.Port                              = settingsCon.ConnectPort_0.ToString();
                            connectFirst.UseCompression                    = settingsCon.ConnectUseCompression_0;
                            connectFirst.ConnectPeriodOfPingMessage        = (int)settingsCon.ConnectPeriodOfPingMessage_0;
                            connectFirst.ConnectDelayBeforeNextConnecting  = (int)settingsCon.ConnectDelayBeforeNextConnecting_0;
                            connectFirst.ConnectSendingPeropdDuringParking = (int)settingsCon.ConnectSendingPeropdDuringParking_0;
                            connectFirst.ConnectSendingPeropdInSleepMode   = (int)settingsCon.ConnectSendingPeropdInSleepMode_0;
                            connectFirst.AdditionParams                    = (int)settingsCon.AdditionParams_0;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.SettingsSleep:
                        Application.Current.Dispatcher.Invoke(() =>
                        {
                            var settingsSpeep = converter.Deserialize <TrackerStructureSleep>((byte[])i.Data);
                        });
                        break;

                    case TrackerTypeData.KeyParameter.SettingsGpio:
                        Application.Current.Dispatcher.Invoke(() =>
                        {
                            var settingsGpio             = converter.Deserialize <TrackerStructureGPIO>((byte[])i.Data);
                            InputItemSettingsModel gpio1 = viewModel.SettingsModel.InputsSettingsModelList[0];
                            InputItemSettingsModel gpio2 = viewModel.SettingsModel.InputsSettingsModelList[1];
                            InputItemSettingsModel gpio3 = viewModel.SettingsModel.InputsSettingsModelList[2];
                            // gpio1
                            gpio1.PortRoleIndex          = settingsGpio.IN1_Mode;
                            gpio1.SignalAnalysysTime     = settingsGpio.IN1_timeBase;
                            gpio1.ThresholdUpper         = settingsGpio.IN1_LowLevelUpperThreshold;
                            gpio1.ThresholdLower         = settingsGpio.IN1_HightLevelLowerThreshold;
                            gpio1.UseFiltrating          = settingsGpio.IN1_IsFiltrationEnable;
                            gpio1.LevelOfFiltrationValue = settingsGpio.IN1_AveragingFilterLenght;
                            // gpio2
                            gpio2.PortRoleIndex          = settingsGpio.IN2_Mode;
                            gpio2.SignalAnalysysTime     = settingsGpio.IN2_timeBase;
                            gpio2.ThresholdUpper         = settingsGpio.IN2_LowLevelUpperThreshold;
                            gpio2.ThresholdLower         = settingsGpio.IN2_HightLevelLowerThreshold;
                            gpio2.UseFiltrating          = settingsGpio.IN2_IsFiltrationEnable;
                            gpio2.LevelOfFiltrationValue = settingsGpio.IN2_AveragingFilterLenght;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.SettingsLlsInternal:
                        Application.Current.Dispatcher.Invoke(() =>
                        {
                            var settingsLls = converter.Deserialize <TrackerStructureSettingsLls>((byte[])i.Data);
                            var lls1        = viewModel.SettingsModel.LlsDataViewModelList[0];
                            var lls2        = viewModel.SettingsModel.LlsDataViewModelList[1];
                            /* first */
                            lls1.MinLevel = settingsLls.MinLevelLls1.ToString();
                            lls1.MaxLevel = settingsLls.MaxLevelLls1.ToString();
                            lls1.CntEmpty = settingsLls.CntEmptyLls1.ToString();
                            lls1.CntFull  = settingsLls.CntFullLls1.ToString();
                            lls1.TypeOutMessageIsRelativeLevel         = settingsLls.OutTypeLls1 == 0 ? false : true;
                            lls1.TypeOfFiltrationIndex                 = settingsLls.FillUpThresholdLls1;
                            lls1.FiltrationAveragingTime               = settingsLls.AvarageLenghLls1.ToString();
                            lls1.FiltrationLenghtOfMedian              = settingsLls.MedianLenghtLls1.ToString();
                            lls1.FiltrationProcessNoiseCovarianceQ     = settingsLls.QLls1.ToString();
                            lls1.FiltrationMeasurementNoiseCovarianceR = settingsLls.RLls1.ToString();
                            lls1.TempCompenstationModeIndex            = settingsLls.ThermocompTypeLls1;
                            lls1.TempCompensationCoef1                 = settingsLls.K1Lls1.ToString();
                            lls1.TempCompensationCoef2                 = settingsLls.K2Lls1.ToString();
                            lls1.TypeOfInterpolationIndex              = settingsLls.InterpolationTypeLls1;
                            /* second */
                            lls2.MinLevel = settingsLls.MinLevelLls2.ToString();
                            lls2.MaxLevel = settingsLls.MaxLevelLls2.ToString();
                            lls2.CntEmpty = settingsLls.CntEmptyLls2.ToString();
                            lls2.CntFull  = settingsLls.CntFullLls2.ToString();
                            lls2.TypeOutMessageIsRelativeLevel         = settingsLls.OutTypeLls2 == 0 ? false : true;
                            lls2.TypeOfFiltrationIndex                 = settingsLls.FillUpThresholdLls2;
                            lls2.FiltrationAveragingTime               = settingsLls.AvarageLenghLls2.ToString();
                            lls2.FiltrationLenghtOfMedian              = settingsLls.MedianLenghtLls2.ToString();
                            lls2.FiltrationProcessNoiseCovarianceQ     = settingsLls.QLls2.ToString();
                            lls2.FiltrationMeasurementNoiseCovarianceR = settingsLls.RLls2.ToString();
                            lls2.TempCompenstationModeIndex            = settingsLls.ThermocompTypeLls2;
                            lls2.TempCompensationCoef1                 = settingsLls.K1Lls2.ToString();
                            lls2.TempCompensationCoef2                 = settingsLls.K2Lls2.ToString();
                            lls2.TypeOfInterpolationIndex              = settingsLls.InterpolationTypeLls2;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.SettingsOneWire:
                        Application.Current.Dispatcher.Invoke(() =>
                        {
                            var settingsOneWire = converter.Deserialize <TrackerStructureSettingsOneWire>((byte[])i.Data);
                            /* onewire1 */
                            viewModel.SettingsModel.OneWireSettingsModelList[0].IsEnable       = settingsOneWire.Sensor1IsEnabled;
                            viewModel.SettingsModel.OneWireSettingsModelList[0].SensorName     = Encoding.ASCII.GetString(settingsOneWire.Sensor1_Name).Trim('\0');
                            viewModel.SettingsModel.OneWireSettingsModelList[0].HexCode        = Encoding.ASCII.GetString(settingsOneWire.Sensor1_Code).Trim('\0');
                            viewModel.SettingsModel.OneWireSettingsModelList[0].LowerAlarmZone = (int)settingsOneWire.Sensor1_AlarmZoneMin;
                            viewModel.SettingsModel.OneWireSettingsModelList[0].UpperAlarmZone = (int)settingsOneWire.Sensor1_AlarmZoneMax;
                            /* onewire2 */
                            viewModel.SettingsModel.OneWireSettingsModelList[1].IsEnable       = settingsOneWire.Sensor2IsEnabled;
                            viewModel.SettingsModel.OneWireSettingsModelList[1].SensorName     = Encoding.ASCII.GetString(settingsOneWire.Sensor2_Name).Trim('\0');
                            viewModel.SettingsModel.OneWireSettingsModelList[1].HexCode        = Encoding.ASCII.GetString(settingsOneWire.Sensor2_Code).Trim('\0');
                            viewModel.SettingsModel.OneWireSettingsModelList[1].LowerAlarmZone = (int)settingsOneWire.Sensor2_AlarmZoneMin;
                            viewModel.SettingsModel.OneWireSettingsModelList[1].UpperAlarmZone = (int)settingsOneWire.Sensor2_AlarmZoneMax;
                            /* onewire3 */
                            viewModel.SettingsModel.OneWireSettingsModelList[2].IsEnable       = settingsOneWire.Sensor3IsEnabled;
                            viewModel.SettingsModel.OneWireSettingsModelList[2].SensorName     = Encoding.ASCII.GetString(settingsOneWire.Sensor3_Name).Trim('\0');
                            viewModel.SettingsModel.OneWireSettingsModelList[2].HexCode        = Encoding.ASCII.GetString(settingsOneWire.Sensor3_Code).Trim('\0');
                            viewModel.SettingsModel.OneWireSettingsModelList[2].LowerAlarmZone = (int)settingsOneWire.Sensor3_AlarmZoneMin;
                            viewModel.SettingsModel.OneWireSettingsModelList[2].UpperAlarmZone = (int)settingsOneWire.Sensor3_AlarmZoneMax;
                            /* onewire5 */
                            viewModel.SettingsModel.OneWireSettingsModelList[3].IsEnable       = settingsOneWire.Sensor4IsEnabled;
                            viewModel.SettingsModel.OneWireSettingsModelList[3].SensorName     = Encoding.ASCII.GetString(settingsOneWire.Sensor4_Name).Trim('\0');
                            viewModel.SettingsModel.OneWireSettingsModelList[3].HexCode        = Encoding.ASCII.GetString(settingsOneWire.Sensor4_Code).Trim('\0');
                            viewModel.SettingsModel.OneWireSettingsModelList[3].LowerAlarmZone = (int)settingsOneWire.Sensor4_AlarmZoneMin;
                            viewModel.SettingsModel.OneWireSettingsModelList[3].UpperAlarmZone = (int)settingsOneWire.Sensor4_AlarmZoneMax;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.SettingsSms:
                        Application.Current.Dispatcher.Invoke(() =>
                        {
                            var settingsSms = converter.Deserialize <TrackerStructureSettingsSms>((byte[])i.Data);
                        });
                        break;

                    case TrackerTypeData.KeyParameter.SettingsGeofence:
                        Application.Current.Dispatcher.Invoke(() =>
                        {
                            //var settingsGeofence = converter.Deserialize<TrackerStructureGeofense>((byte[])i.Data);
                        });
                        break;

                    case TrackerTypeData.KeyParameter.SettingsTrack:
                        Application.Current.Dispatcher.Invoke(() =>
                        {
                            var settingsTrack = converter.Deserialize <TrackerStructureSettingsTrack>((byte[])i.Data);
                        });
                        break;

                    default:
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("MainPanel: parsing data to ui exception: " + ex.ToString());
                }
            }
            Application.Current.Dispatcher.Invoke(delegate
            {
                MessageBox.Show("Settings have been read",
                                "Ok",
                                MessageBoxButton.OK,
                                MessageBoxImage.Information);
            });
            if (data.typeMessage == TrackerTypeData.TypeMessage.SettignsWrite)
            {
                Application.Current.Dispatcher.Invoke(delegate
                {
                    MessageBox.Show("Settings have been recorded",
                                    "Ok",
                                    MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                });
            }
        }