public CCanAppli(Font font) //J'ai modifié le code en supprimant le Bitmap LCD du paramètre { //m_busCan=new GTM.GHIElectronics.CANDW(6); m_busCan = new ControllerAreaNetwork(ControllerAreaNetwork.Channel.One, ControllerAreaNetwork.Speed.Kbps250); m_font = font; // m_LCD = LCD; // m_tabWaitDONE = new WaitHandle[] { new AutoResetEvent(false), //DONE new AutoResetEvent(false), //STOPPED new AutoResetEvent(false) //BLOCKED }; m_waitACK = new WaitHandle[] { new AutoResetEvent(false), new AutoResetEvent(false), }; m_msgRecu = new ControllerAreaNetwork.Message[10]; for (int i = 0; i < 10; i++) { m_msgRecu[i] = new ControllerAreaNetwork.Message(); } // m_busCan.Initialize(GHI.IO.ControllerAreaNetwork.Speed.Kbps125, GHI.IO.ControllerAreaNetwork.Channel.One); //m_busCan.ErrorReceived += m_busCan_ErrorReceived; // m_busCan.MessagesReceived += m_busCan_MessagesReceived; m_busCan.ErrorReceived += m_busCan_ErrorReceived; m_busCan.MessageAvailable += m_busCan_MessageAvailable; m_busCan.Enabled = true; // mutex = new Object(); }
private void Can_ErrorReceived(ControllerAreaNetwork sender, ControllerAreaNetwork.ErrorReceivedEventArgs e) { if (true) //(e.Error == ControllerAreaNetwork.Error.BusOff) { can.Reset(); } switch (e.Error) { case ControllerAreaNetwork.Error.BusOff: OnError("BusOff"); break; case ControllerAreaNetwork.Error.ErrorPassive: OnError("ErrorPassive"); break; case ControllerAreaNetwork.Error.Overrun: OnError("Overrun"); break; case ControllerAreaNetwork.Error.RXOver: OnError("RXOver"); break; default: OnError("Unknown"); break; } }
protected CanNativeAdapter(CanNativeAdapterSettings settings, ControllerAreaNetwork.Timings timings = null) : base(settings) { switch (settings.Speed) { case CanAdapterSettings.CanSpeed.Kbps1000: can = new ControllerAreaNetwork(settings.CanPort, ControllerAreaNetwork.Speed.Kbps1000); break; case CanAdapterSettings.CanSpeed.Kbps500: can = new ControllerAreaNetwork(settings.CanPort, ControllerAreaNetwork.Speed.Kbps500); break; case CanAdapterSettings.CanSpeed.Kbps250: can = new ControllerAreaNetwork(settings.CanPort, ControllerAreaNetwork.Speed.Kbps250); break; case CanAdapterSettings.CanSpeed.Kbps125: can = new ControllerAreaNetwork(settings.CanPort, ControllerAreaNetwork.Speed.Kbps125); break; default: can = new ControllerAreaNetwork(settings.CanPort, timings ?? GetTimings(settings)); break; } can.ErrorReceived += Can_ErrorReceived; can.MessageAvailable += Can_MessageAvailable; }
/// <summary>Initializes the CAN bus.</summary> /// <param name="timings">The desired bus timings.</param> /// <param name="channel">The CAN channel to use.</param> public void Initialize(ControllerAreaNetwork.Timings timings, ControllerAreaNetwork.Channel channel) { this.can = new ControllerAreaNetwork(channel, timings); this.can.MessageAvailable += this.OnCanMessagesAvailable; this.can.ErrorReceived += this.OnCanErrorReceived; this.can.Enabled = true; }
private void Can_MessageAvailable(ControllerAreaNetwork sender, ControllerAreaNetwork.MessageAvailableEventArgs e) { var messages = sender.ReadMessages(); foreach (var message in messages) { OnMessageReceived(new CanMessage(message)); } }
/// <summary>Constructs a new instance.</summary> /// <param name="socketNumber">The socket that this module is plugged in to.</param> public CANDW(int socketNumber) { Socket socket = Socket.GetSocket(socketNumber, true, this, null); socket.EnsureTypeIsSupported('C', this); this.syncRoot = new object(); this.running = false; this.sent = 0; this.can = null; this.workerThread = null; }
void m_busCan_MessageAvailable(ControllerAreaNetwork sender, ControllerAreaNetwork.MessageAvailableEventArgs e) { m_msgRecu[0] = sender.ReadMessage(); Debug.Print("CanId reçu" + m_msgRecu[0].ArbitrationId.ToString()); AutoResetEvent evtDONE = (AutoResetEvent)m_tabWaitDONE[0]; AutoResetEvent evtSTOP = (AutoResetEvent)m_tabWaitDONE[1]; AutoResetEvent evtBLOCKED = (AutoResetEvent)m_tabWaitDONE[2]; AutoResetEvent evtACK = (AutoResetEvent)m_waitACK[0]; AutoResetEvent evtACKSTOP = (AutoResetEvent)m_waitACK[1]; // Etude de la commande reçue. if ((m_msgRecu[0].ArbitrationId != (uint)IDcommande.WStopACK) && (m_msgRecu[0].ArbitrationId != (uint)IDcommande.WStopDONE)) { if (m_msgRecu[0].ArbitrationId == m_id + 1) { evtACK.Set(); } else if (m_msgRecu[0].ArbitrationId == m_id + 2) { evtDONE.Set(); } } switch (m_msgRecu[0].ArbitrationId) { case (uint)IDcommande.WStopACK: evtACKSTOP.Set(); break; case (uint)IDcommande.WStopDONE: evtSTOP.Set(); break; case (uint)IDcommande.WBeBlocked: evtBLOCKED.Set(); break; } }
void m_busCan_ErrorReceived(ControllerAreaNetwork sender, ControllerAreaNetwork.ErrorReceivedEventArgs e) { throw new NotImplementedException(); }
private void OnCanErrorReceived(ControllerAreaNetwork sender, ControllerAreaNetwork.ErrorReceivedEventArgs e) { this.OnErrorReceived(this, new ErrorReceivedEventArgs(e.Error)); }
private void OnCanMessagesAvailable(ControllerAreaNetwork sender, ControllerAreaNetwork.MessageAvailableEventArgs e) { this.OnMessagesReceived(this, new MessagesReceivedEventArgs(this.can.ReadMessages())); }