コード例 #1
0
        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();
        }
コード例 #2
0
ファイル: CANDW_43.cs プロジェクト: valoni/NETMF-Gadgeteer
        /// <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 });
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 public CanMessage(ControllerAreaNetwork.Message message)
 {
     this.message = message;
 }