Пример #1
0
        public async Task <bool> SetCANParametersAsync(SpyType type, CANSpyParameters param)
        {
            const UInt32 setParamCAN1Spy = 0x00010003;
            const UInt32 setParamCAN2Spy = 0x00020003;

            byte[] paramData = new byte[CANSpyParameters.ParamSize];
            ArrConverter.SetBufferFromUInt32((UInt32)param.BitTiming, paramData, 0);
            ArrConverter.SetBufferFromUInt32((UInt32)param.FrameFormat, paramData, 4);

            if (param.ErrorReception)
            {
                ArrConverter.SetBufferFromUInt32((UInt32)1, paramData, 8);
            }
            else
            {
                ArrConverter.SetBufferFromUInt32((UInt32)0, paramData, 8);
            }

            if (param.ApplyMask)
            {
                ArrConverter.SetBufferFromUInt32((UInt32)1, paramData, 12);
            }
            else
            {
                ArrConverter.SetBufferFromUInt32((UInt32)0, paramData, 12);
            }

            ArrConverter.SetBufferFromUInt32((UInt32)param.Mask, paramData, 16);
            ArrConverter.SetBufferFromUInt32((UInt32)param.ID, paramData, 20);

            if (type == SpyType.CANSpyOne)
            {
                await SendReceiveCommand(setParamCAN1Spy, paramData);
            }
            else if (type == SpyType.CANSpyTwo)
            {
                await SendReceiveCommand(setParamCAN2Spy, paramData);
            }

            return(await Task.FromResult(true));
        }
Пример #2
0
        public CANSpyViewModel(int line)
        {
            if (line == 1)
            {
                Title = "CAN Line 1";
            }
            else
            {
                Title = "CAN Line 2";
            }

            bitTimings = new List <int>();
            bitTimings.Add(50000);
            bitTimings.Add(100000);
            bitTimings.Add(125000);
            bitTimings.Add(200000);
            bitTimings.Add(250000);
            bitTimings.Add(400000);
            bitTimings.Add(500000);
            bitTimings.Add(1000000);

            selectedBitTiming = 50000;

            samplingPoints = new List <double>();
            samplingPoints.Add(75.00);
            samplingPoints.Add(87.50);

            selectedSamplingPoint = 75.00;

            frameFormats = new List <string>();
            FrameFormats.Add(frameFormat11Bit);
            FrameFormats.Add(frameFormat29Bit);

            selectedFrameFormat = frameFormat11Bit;

            enableErrorReception = true;
            applyMask            = false;

            lineNumber = line;

            isSpying = false;

            requestBufferTimer          = new Timer(5000);
            requestBufferTimer.Elapsed += UpdateMonitorBuffer;

            requestBufferTimer.AutoReset = true;
            requestBufferTimer.Enabled   = false;

            MonitorBuffer = new List <CANSpyMessage>();

            StartCommand = new Command(async() =>
            {
                try
                {
                    var param       = new CANSpyParameters();
                    param.BitTiming = SelectedBitTiming;
                    //param.SamplingPoint = SelectedSamplingPoint;

                    if (selectedFrameFormat == frameFormat11Bit)
                    {
                        param.FrameFormat = CANSpyParameters.SimpleFrameFormat;
                    }
                    else
                    {
                        param.FrameFormat = CANSpyParameters.LongFrameFormat;
                    }

                    param.ErrorReception = EnableErrorReception;
                    param.ApplyMask      = ApplyMask;
                    param.Mask           = Convert.ToUInt32(Mask, 16);
                    param.ID             = Convert.ToUInt32(ID, 16);

                    if (lineNumber == 1)
                    {
                        await AnalyzerDevice.SetCANParametersAsync(Services.SpyType.CANSpyOne, param);
                        await AnalyzerDevice.StartSpyAsync(Services.SpyType.CANSpyOne);
                    }
                    else if (lineNumber == 2)
                    {
                        await AnalyzerDevice.SetCANParametersAsync(Services.SpyType.CANSpyTwo, param);
                        await AnalyzerDevice.StartSpyAsync(Services.SpyType.CANSpyTwo);
                    }

                    Device.BeginInvokeOnMainThread(() =>
                    {
                        IsSpying = true;
                    });

                    requestBufferTimer.Enabled = true;
                }
                catch (Exception ex)
                {
                    MessagingCenter.Send <CANSpyViewModel, string>(this, "StartError", ex.Message);
                }
            });

            StopCommand = new Command(async() =>
            {
                try
                {
                    if (lineNumber == 1)
                    {
                        await AnalyzerDevice.StopSpyAsync(Services.SpyType.CANSpyOne);
                    }
                    else if (lineNumber == 2)
                    {
                        await AnalyzerDevice.StopSpyAsync(Services.SpyType.CANSpyTwo);
                    }

                    Device.BeginInvokeOnMainThread(() =>
                    {
                        IsSpying = false;
                    });

                    requestBufferTimer.Enabled = false;
                }
                catch (Exception ex)
                {
                    MessagingCenter.Send <CANSpyViewModel, string>(this, "StopError", ex.Message);
                }
            });
        }