Example #1
0
        /// <summary>
        /// Устанавливает отслеживание сообщений с заданным дескриптором по указанному порту
        /// </summary>
        /// <param name="Port">Прослушиваемый порт</param>
        /// <param name="Descriptor">Отлавливаемый дескриптор</param>
        public CanFrameHandler(CanPort Port, int Descriptor)
        {
            this.Port       = Port;
            this.Descriptor = Descriptor;

            Port.Handle(this);
        }
Example #2
0
        /// <summary>
        /// Устанавливает отслеживание сообщений с заданным дескриптором по указанному порту
        /// </summary>
        /// <param name="Port">Прослушиваемый порт</param>
        /// <param name="Descriptor">Отлавливаемый дескриптор</param>
        public CanFrameHandler(CanPort Port, int Descriptor)
        {
            this.Port = Port;
            this.Descriptor = Descriptor;

            Port.Handle(this);
        }
Example #3
0
 private void RegisterNewRecorder(CanPort forPort)
 {
     Recorders.Add(new LogEncodingRecorder<FrameSbsEncoder>(forPort,
                       new FileInfo(System.IO.Path.Combine("CanLog", string.Format("log {0}.bin", forPort.Name)))));
     Recorders.Add(new LogEncodingRecorder<FrameTextEncoder>(forPort,
                       new FileInfo(System.IO.Path.Combine("CanLog", string.Format("log {0}.txt", forPort.Name)))));
 }
Example #4
0
        /// <summary>
        /// Находит в сети все устройства с заданным шаблоном билетов.
        /// </summary>
        /// <param name="Template">Шаблон билета устройства</param>
        /// <param name="OnPort">Can-порт, через который осуществляется работа</param>
        /// <param name="Timeout">Таймаут (в милисекундах). Таймаут отсчитывается с момента получения последней IsoTP-транзакции, а не с момента начала опроса</param>
        /// <returns></returns>
        public static List<DeviceTicket> LocateDevices(DeviceTicket Template, CanPort OnPort, int Timeout = 100)
        {
            using (var flow = new CanFlow(OnPort, CanProg.FuDev, CanProg.FuInit, CanProg.FuProg))
            {
                Template.BlockSerialNumber = 0;

                var helloMessage = new Messages.ProgInit(Template);
                IsoTp.Send(flow, CanProg.FuInit, CanProg.FuDev, helloMessage.Encode());

                var res = new List<DeviceTicket>();
                var sw = new Stopwatch();
                sw.Start();
                while (sw.ElapsedMilliseconds < Timeout)
                {
                    try
                    {
                        var tr = IsoTp.Receive(flow, CanProg.FuDev, CanProg.FuProg, TimeSpan.FromMilliseconds(Timeout - sw.ElapsedMilliseconds));
                        var msg = Messages.Message.DecodeMessage(tr.Data);
                        if (msg is Messages.ProgBCastResponse) res.Add((msg as Messages.ProgBCastResponse).Ticket);
                    }
                    catch (IsoTpReceiveTimeoutException)
                    {
                        break;
                    }
                }
                return res.Distinct().ToList();
            }
        }
 public WatchWindow(CanPort OnPort)
 {
     Port = OnPort;
     Port.Recieved += new CanFramesReceiveEventHandler(Port_Recieved);
     HandlerModels = new ObservableCollection<FrameHandlerModel>();
     InitializeComponent();
 }
Example #6
0
 /// <summary>
 /// Добавляет порт в список прослушиваемых
 /// </summary>
 public void RegisterPort(CanPort Port)
 {
     foreach (var descriptor in _descriptors)
     {
         var h = new CanFrameHandler(Port, descriptor);
         h.Received += Handler_FrameReceived;
         _handlers.Add(h);
     }
 }
Example #7
0
 /// <summary>
 /// Создаёт поток вокруг выбранного Can-порта
 /// </summary>
 /// <param name="Port">Can-порт, поток с которого нужно буферизировать</param>
 /// <param name="Descriptors">Список обрабатываемых дескрипторов</param>
 public CanFlow(CanPort Port, params int[] Descriptors)
 {
     this.Port = Port;
     this.Descriptors = new ReadOnlyCollection<int>(Descriptors.Distinct().ToList());
     foreach (var d in this.Descriptors)
     {
         var h = new CanFrameHandler(Port, d);
         h.Received += Handler_MessageReceived;
         _handlers.Add(h);
     }
 }
Example #8
0
 /// <summary>
 /// Создаёт поток вокруг выбранного Can-порта
 /// </summary>
 /// <param name="Port">Can-порт, поток с которого нужно буферизировать</param>
 /// <param name="Descriptors">Список обрабатываемых дескрипторов</param>
 public CanFlow(CanPort Port, params int[] Descriptors)
 {
     this.Port        = Port;
     this.Descriptors = new ReadOnlyCollection <int>(Descriptors.Distinct().ToList());
     foreach (var d in this.Descriptors)
     {
         var h = new CanFrameHandler(Port, d);
         h.Received += Handler_MessageReceived;
         _handlers.Add(h);
     }
 }
Example #9
0
        public SendWindow(CanPort WithPort)
        {
            this.Port = WithPort;

            model = new SendingModel();
            model.SelectedFrameModifed += EditingFrame_PropertyChanged;
            this.DataContext = model;

            InitializeComponent();

            this.Title = string.Format("Отправка в {0}", Port.Name);

            t = new Timer();
            t.Elapsed += new ElapsedEventHandler(t_Elapsed);

            Dispatcher.BeginInvoke((Action<String>)(txt => SendEdit.Text = txt), Properties.Settings.Default.LastSend);
        }
        public void FlashDevice(DeviceTicket Ticket, CanPort port, FirmwaringProgressViewModel GlobalProgress, FirmwaringProgressViewModel LocalProgress)
        {
            _logger.Info("-----");
            _logger.Info("Подключаемся к {0}", Ticket);
            PostProgress(GlobalProgress,
                         string.Format("Подключение к модулю (№{0}/{1})...", Ticket.BlockSerialNumber, Ticket.Channel));

            using (CanProg session = CanProg.Connect(port, Ticket))
            {
                _logger.Info("Подключились и начинаем передачу прошивки на {0}", Ticket);
                PostProgress(GlobalProgress, "Передача прошивки {0:P0}", 0);

                var updater = new ComponentUpdater(
                    session);
                updater.SynchronizeComponent(Component, Information, GlobalProgress, LocalProgress);
                PostProgress(GlobalProgress, "Применение изменений...");
                SubmitAckStatus submitStatus = session.Submit(SubmitStatus.Submit);
                _logger.Info("Завершили программирование {0}, статус: {1}", Ticket, submitStatus);
                if (submitStatus != SubmitAckStatus.SubmitSuccessed)
                    throw new SubmitFailsException();
            }
        }
Example #11
0
 private static void RegisterPort(CanPort p)
 {
     p.Recieved += new CanFramesReceiveEventHandler(CanFrame_Recieved);
 }
Example #12
0
 /// <summary>
 /// Создаёт буфер для отлова сообщений с указанным дескриптором на указанном порту
 /// </summary>
 /// <param name="Descriptors">Отлавливаемые дескрипторы</param>
 /// <param name="OnPort"></param>
 public CanFramesBuffer(IEnumerable<int> Descriptors, CanPort OnPort)
     : this(Descriptors, new[] { OnPort })
 {
 }
Example #13
0
 public CanFramesReceiveEventArgs(IList<CanFrame> Frames, CanPort Port)
 {
     this.Frames = Frames;
     this.Port = Port;
 }
Example #14
0
 public CanFramesBuffer(int Descriptor, CanPort OnPort)
     : this(new[] { Descriptor }, new[] { OnPort })
 {
 }
Example #15
0
 public CanFramesBuffer(CanPort OnPort, params int[] Descriptors)
     : this(Descriptors, OnPort)
 {
 }
 public FrameHandlerModel(int Descriptor, CanPort Port)
 {
     this.Descriptor = Descriptor;
     this.Port = Port;
     LastFrame = null;
 }
Example #17
0
 /// <summary>
 /// Создаёт буфер для отлова сообщений с указанным дескриптором на указанном порту
 /// </summary>
 /// <param name="Descriptors">Отлавливаемые дескрипторы</param>
 /// <param name="OnPort"></param>
 public CanFramesBuffer(IEnumerable <int> Descriptors, CanPort OnPort)
     : this(Descriptors, new[] { OnPort })
 {
 }
Example #18
0
 public CanFramesBuffer(int Descriptor, CanPort OnPort)
     : this(new[] { Descriptor }, new[] { OnPort })
 {
 }
Example #19
0
 public CanFramesReceiveEventArgs(IList <CanFrame> Frames, CanPort Port)
 {
     this.Frames = Frames;
     this.Port   = Port;
 }
Example #20
0
 public CanFramesBuffer(CanPort OnPort, params int[] Descriptors)
     : this(Descriptors, OnPort)
 {
 }
Example #21
0
 /// <summary>
 /// Добавляет порт в список прослушиваемых
 /// </summary>
 public void RegisterPort(CanPort Port)
 {
     foreach (var descriptor in _descriptors)
     {
         var h = new CanFrameHandler(Port, descriptor);
         h.Received += Handler_FrameReceived;
         _handlers.Add(h);
     }
 }
Example #22
0
 public DeviceLocator(CanPort OnPort)
 {
     this.Port = OnPort;
 }