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(); }
/// <summary>Sends the given message over the CAN bus.</summary> /// <param name="message">The message to send.</param> public void SendMessage(ControllerAreaNetwork.Message message) { if (message == null) { throw new ArgumentNullException("message"); } this.SendMessages(new ControllerAreaNetwork.Message[] { message }); }
public idErreur envoyer(uint id, byte[] data = null, int nbData = 0) { idErreur retour = idErreur.FatalErreurCAN; m_id = id; // Tableau d'envoie de commande. ControllerAreaNetwork.Message[] commande; commande = new ControllerAreaNetwork.Message[1]; commande[0] = new ControllerAreaNetwork.Message(); //construction de la trame commande[0].ArbitrationId = id; commande[0].Length = nbData; commande[0].IsExtendedId = false; commande[0].IsRemoteTransmissionRequest = false; if (nbData != 0) { for (int i = 0; i < nbData; i++) { commande[0].Data[i] = data[i]; } } // --- lock de la commande à envoyer //System.Threading.Monitor.Enter(mutex); m_busCan.SendMessages(commande); Debug.Print("CanId Envoye" + commande[0].ArbitrationId.ToString()); // ### Commande envoyé ### returnWaitAny = WaitHandle.WaitAny(m_waitACK, 500, false); switch (returnWaitAny) { case 0: retour = idErreur.OK; break; case 1: retour = idErreur.ACKSTOP; break; default: retour = idErreur.timoutACK; break; } // --- unlock de la commande //System.Threading.Monitor.Exit(mutex); return(retour); }
public CanMessage(ControllerAreaNetwork.Message message) { this.message = message; }