コード例 #1
0
 public void InsertData(TrackerParserDataAbstract.ParserResult data, ViewModelBase model)
 {
     if (data != null)
     {
         var viewModel = model as MainViewModel;
         if (data.type == TrackerTypeData.TypePacketData.Answer)
         {
             if (data.typeMessage == TrackerTypeData.TypeMessage.SettingsRead)
             {
                 InsertSettingsResult(data, viewModel);
             }
         }
         else
         {
             if (data.type == TrackerTypeData.TypePacketData.AsyncData)
             {
                 InsertAsyncData(data, viewModel);
             }
             else
             {
                 throw new System.InvalidOperationException("Undefined type of key");
             }
         }
     }
     else
     {
         Console.WriteLine("Parser data error");
     }
 }
コード例 #2
0
        private void InsertAsyncData(TrackerParserDataAbstract.ParserResult data, MainViewModel viewModel)
        {
            switch (data.typeMessage)
            {
            case TrackerTypeData.TypeMessage.Debug:
            case TrackerTypeData.TypeMessage.Status:
            case TrackerTypeData.TypeMessage.Data:
            case TrackerTypeData.TypeMessage.AsyncData:
            case TrackerTypeData.TypeMessage.Log:
                foreach (var i in data.data)
                {
                    switch (i.Key)
                    {
                    case TrackerTypeData.KeyParameter.DbgLevel:
                        break;

                    case TrackerTypeData.KeyParameter.DbgMessage:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            viewModel.RightPanelModel.StatusInfo.Log.Add(item: new StatusDataViewModel.LogItem {
                                Message = i.Data.ToString(), Type = i.Key
                            });
                        });
                        break;

                    case TrackerTypeData.KeyParameter.imei:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            viewModel.RightPanelModel.CurrentData.ImeiModemValue = i.Data.ToString();
                        });
                        break;

                    case TrackerTypeData.KeyParameter.imsi:
                        break;

                    case TrackerTypeData.KeyParameter.GsmCsq:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            viewModel.RightPanelModel.CurrentData.GmsSignalStrenghtPercentValue = (int)i.Data;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.GnssLat:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            viewModel.RightPanelModel.CurrentData.GnssLatValue = (float)i.Data;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.GnssLon:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            viewModel.RightPanelModel.CurrentData.GnssLonValue = (float)i.Data;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.GnssSat:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            viewModel.RightPanelModel.CurrentData.GnssSatFixValue = (int)i.Data;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.Ain1:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            viewModel.RightPanelModel.CurrentData.Ain1Value = (int)i.Data;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.Ain2:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            viewModel.RightPanelModel.CurrentData.Ain2Value = (int)i.Data;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.Ain3:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            viewModel.RightPanelModel.CurrentData.Ain3Value = (int)i.Data;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.PowerBat:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            viewModel.RightPanelModel.CurrentData.PowerBatteryValue = (int)i.Data;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.PowerExt:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            viewModel.RightPanelModel.CurrentData.PowerExternalValue = (int)i.Data;
                        });
                        break;

                    case TrackerTypeData.KeyParameter.Time:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
                            viewModel.RightPanelModel.CurrentData.Time = dtDateTime.AddSeconds((int)i.Data).ToLocalTime();
                        });
                        break;

                    case TrackerTypeData.KeyParameter.LogRecord:
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            StructureBinaryConverter structureBinaryConverter = new StructureBinaryConverter();
                            var log = structureBinaryConverter.Deserialize <TrackerStructureLogRecord>((byte[])i.Data);
                            viewModel.RightPanelModel.CurrentData.LogPositionList.Add(new CurrentDataViewModel.LogPoint(log.Id, log.GnssLongitude, log.GnssLatitude, DateTime.Now));
                            if (!DrawMap(log.GnssLatitude, log.GnssLongitude, viewModel))
                            {
                                viewModel.ConnectViewModel.IsLogReading = false;
                                viewModel.ConnectViewModel.CommandDataBuf.Add(new ConnectPanelViewModel.CommandData("stopTestLog", new byte[0]));
                                MessageBox.Show("It is not possible to read more than 500 items", "Information", MessageBoxButton.OK);
                            }
                        });
                        break;
                    }
                }
                break;

            case TrackerTypeData.TypeMessage.SettingsRead:
                break;

            case TrackerTypeData.TypeMessage.SettignsWrite:
                break;

            case TrackerTypeData.TypeMessage.LogCleanFinish:
                viewModel.ConnectViewModel.IsWaitsForLogClear = false;
                MessageBox.Show("The log has been cleared",
                                "Ok",
                                MessageBoxButton.OK,
                                MessageBoxImage.Information
                                );
                break;

            case TrackerTypeData.TypeMessage.Undefined:
                throw new InvalidOperationException("Invalid type");
            }
        }
コード例 #3
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);
                });
            }
        }