コード例 #1
0
        private void Channel_ReceivedData(object sender, CANAnalyzerDevices.Devices.DeviceChannels.Events.ChannelDataReceivedEventArgs e)
        {
            if ((Status == RecieveState.Recieving) && (sender is IChannel ch) && (ch == Channel))
            {
                MonitorChannelPageData data;
                lock (Items)
                {
                    data = Items.FirstOrDefault(x => (x.CanId == e.Data.CanId) && (x.IsExtId == e.Data.IsExtId) && (x.DLC == e.Data.DLC));
                    if (data == null)
                    {
                        data = new MonitorChannelPageData(e.Data.CanId, e.Data.IsExtId, e.Data.DLC);

                        _context.Send((s) =>
                        {
                            Items.Add(data);
                        }, null);
                    }
                }

                data.SetPayload(e.Data.Payload, e.Data.Time);
            }
        }
コード例 #2
0
        private void Channel_ReceivedData(object sender, CANAnalyzerDevices.Devices.DeviceChannels.Events.ChannelDataReceivedEventArgs e)
        {
            if (RecieveState != RecieveState.Recieving || sender != Channel || currentTraceProvider == null)
            {
                return;
            }

            TraceModel model = new TraceModel()
            {
                Time    = e.Data.Time,
                Payload = e.Data.Payload
            };


            //проверка на существование такого же CanHeader'a
            List <CanHeaderModel> canHeaders;
            int filtersCount;

            lock (currentTraceProvider)
            {
                canHeaders   = currentTraceProvider.CanHeaders.Where(x => (x.IsExtId == e.Data.IsExtId) && (x.CanId == e.Data.CanId) && (x.DLC == e.Data.DLC)).Take(1).ToList();
                filtersCount = currentTraceProvider.CanHeaders.Where(x => (x.IsExtId == e.Data.IsExtId) && (x.CanId == e.Data.CanId)).Count();


                //если такого CanHeader'a нет, то создаем, добавляем в БД
                if (canHeaders.Count == 0)
                {
                    canHeaders.Add(new CanHeaderModel()
                    {
                        IsExtId = e.Data.IsExtId,
                        CanId   = e.Data.CanId,
                        DLC     = e.Data.DLC
                    });
                    currentTraceProvider.Add(canHeaders[0]);
                    lock (currentTraceProvider)
                    {
                        currentTraceProvider.SaveChanges();
                    }
                }

                //если появился новый CAN ID
                if (filtersCount == 0)
                {
                    CanIdTraceFilter filter = new CanIdTraceFilter(e.Data.CanId, e.Data.IsExtId);
                    filter.PropertyChanged += FilterIsActive_PropertyChanged;
                    _context.Post((s) =>
                    {
                        Filters.Add(filter);
                        Filters = new BindingList <ITraceFilter>(Filters.OrderBy(x => x.ToString()).ToList());
                    }, null);
                }
            }

            model.CanHeader = canHeaders[0];

            currentTraceProvider.Add(model);


            _context.Post((s) =>
            {
                Items.Add(model);
            }, null);
        }