Пример #1
0
        /// <summary>
        /// Construct C# Canpacket from a CanFestival message
        /// </summary>
        /// <param name="msg">A CanFestival message struct</param>
        public canpacket(DriverInstance.Message msg)
        {
            cob  = msg.cob_id;
            len  = msg.len;
            data = new byte[len];

            byte[] temp = BitConverter.GetBytes(msg.data);
            Array.Copy(temp, data, msg.len);
        }
Пример #2
0
        /// <summary>
        /// Send a Can packet on the bus
        /// </summary>
        /// <param name="p"></param>
        public void SendPacket(canpacket p)
        {
            DriverInstance.Message msg = p.ToMsg();

            driver.cansend(msg);

            if (echo == true)
            {
                Driver_rxmessage(msg);
            }
        }
Пример #3
0
        /// <summary>
        /// Convert to a CanFestival message
        /// </summary>
        /// <returns>CanFestival message</returns>
        public DriverInstance.Message ToMsg()
        {
            DriverInstance.Message msg = new DriverInstance.Message();
            msg.cob_id = cob;
            msg.len    = len;
            msg.rtr    = 0;

            byte[] temp = new byte[8];
            Array.Copy(data, temp, len);
            msg.data = BitConverter.ToUInt64(temp, 0);

            return(msg);
        }
        /// <summary>
        /// Private worker thread to keep the rxmessage() function pumped
        /// </summary>
        private void rxthreadworker()
        {
            while (threadrun)
            {
                DriverInstance.Message rxmsg = canreceive();

                if (rxmsg.len != 0)
                {
                    if (rxmessage != null)
                    {
                        rxmessage(rxmsg);
                    }
                }

                System.Threading.Thread.Sleep(1);
            }
        }
Пример #5
0
 /// <summary>
 /// Recieved message callback handler
 /// </summary>
 /// <param name="msg">CanOpen message recieved from the bus</param>
 private void Driver_rxmessage(DriverInstance.Message msg)
 {
     packetqueue.Enqueue(new canpacket(msg));
 }
Пример #6
0
 /// <summary>
 /// Recieved message callback handler
 /// </summary>
 /// <param name="msg">CanOpen message recieved from the bus</param>
 private void Driver_rxmessage(DriverInstance.Message msg, bool bridge = false)
 {
     packetqueue.Enqueue(new canpacket(msg, bridge));
 }