Example #1
0
 public void Setup()
 {
     Adapter = new CanAdapterDevice();
     Adapter.ConnectTo("3869366E3133");
     Adapter.Attributes.Termination = true;
     Adapter.Open(250000);
 }
Example #2
0
 /// <summary>
 /// Constructor
 /// </summary>
 public DeviceExploring(SlaveDeviceCollection devices, CanAdapterDevice adapter)
 {
     this.BackgroundWorker         = new BackgroundWorker();
     this.BackgroundWorker.DoWork += new DoWorkEventHandler(BackgroundWorker_DoWork);
     this.Devices = devices;
     this.Adapter = adapter;
 }
 public void Setup()
 {
     _adapter = new CanAdapterDevice();
     _adapter.Connect();
     _targetBaudrate = 125000;
     _msgBuffer      = new CanMessage[UInt16.MaxValue];
 }
Example #4
0
        static void Main(string[] args)
        {
            /*Adapter példányosítása*/
            CanAdapterDevice adapter = new CanAdapterDevice();

            /*Kapcsolódás egy létező adapterhez.*/
            adapter.Connect();
            /*Kapcsolódott ezzel a SerialNumber-el rendlekező adapterhez.*/
            Console.WriteLine("Connected to: " + adapter.Attributes.SerialNumber);
            /*Busz lezárás engedélyezése. */
            adapter.Attributes.Termination = true;
            /*Megnyitás az átviteli sebesség paraméterrel.*/
            adapter.Open(CanBaudRateCollection.Speed500kBaud);
            /*Üzenet tömb létrehozása.*/
            var txMsgArray = new CanMessage[]
            {
                new CanMessage(0x01FF, new byte[] { 0x01, 0x02, 0x03, 0x04 })
            };

            /*Üzenet tömb küldése.*/
            adapter.Write(txMsgArray);
            /*Kapcsolat zárása*/
            adapter.Close();
            /*Kapcsolat bontása*/
            adapter.Disconnect();
            Console.Read();
        }
Example #5
0
        static void Main(string[] args)
        {
            /*Elérhető adapterek megjelnítése*/
            foreach (CanAdapterItem item in  CanAdapterDevice.GetAdapters())
            {
                Console.WriteLine(item);
            }

            /*Adapter példányosítása*/
            CanAdapterDevice adapter = new CanAdapterDevice();

            /*Kapcsolódás a tömb 0. indexén lévő adapterhez*/
            adapter.ConnectTo(CanAdapterDevice.GetAdapters()[0]);

            /*Kapcsolat bontása*/
            adapter.Disconnect();

            Console.Read();

            /*Konzol kimenete:
             * CAN Bus Adapter - MCAN120803 3869366E3133
             * CAN Bus Adapter - MCAN120803 3873366E3133
             * CAN Bus Adapter - MCAN120803 387536633133
             */
        }
Example #6
0
        static void Main(string[] args)
        {
            /*Elérhető adapterek megjelnítése*/
            foreach (CanAdapterItem item in CanAdapterDevice.GetAdapters())
            {
                Console.WriteLine(item);
            }

            /*Adapter példányosítása*/
            CanAdapterDevice adapter = new CanAdapterDevice();

            /*Kapcsolódás a 3873366E3133 azonosítójú adapterhez*/
            adapter.ConnectTo("3873366E3133");

            Console.WriteLine("Connected to: " + adapter.Attributes.SerialNumber);

            /*Kapcsolat bontása*/
            adapter.Disconnect();

            Console.Read();

            /*Konzol kimenete:
             * CAN Bus Adapter - MCAN120803 3869366E3133
             * CAN Bus Adapter - MCAN120803 3873366E3133
             * CAN Bus Adapter - MCAN120803 387536633133
             * Connected to: 3873366E3133
             */
        }
Example #7
0
 /*ExpectedMessage = "_adapter not found by Serial Number. Code:-8603."*/
 public void _0001_ConnectByInvalidSerialNumberException()
 {
     Assert.Catch <CanAdapterException>(() =>
     {
         _adapter = new CanAdapterDevice();
         _adapter.ConnectTo("abc");
     });
 }
        public void Setup()
        {
            _adapterWriter = new CanAdapterDevice();
            _adapterWriter.ConnectTo(CanAdapterDevice.GetAdapters()[0]);
            _adapterReader = new CanAdapterDevice();
            _adapterReader.ConnectTo(CanAdapterDevice.GetAdapters()[1]);

            _targetBaudrate = 125000;
        }
Example #9
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static string[] GetAdapters()
        {
            var items = CanAdapterDevice.GetAdapters().Select(n => n.SerialNumber).ToArray();

            string[] adp = new string[items.Length + 1];
            items.CopyTo(adp, 0);
            adp[items.Length] = VirtualDeviceName;
            return(adp);
        }
Example #10
0
        public void Setup()
        {
            _adapterWriter = new CanAdapterDevice();
            _adapterWriter.ConnectTo(CanAdapterDevice.GetAdapters()[0]);
            _targetBaudrate = 500000;

            _adapterWriter.Services.Reset();

            _adapterWriter.Open(_targetBaudrate);
        }
Example #11
0
        /// <summary>
        /// Constructor
        /// </summary>
        public DeviceNetMaster()
        {
            Adapter     = new CanAdapterDevice();
            Devices     = new SlaveDeviceCollection(this);
            Exploring   = new DeviceExploring(Devices, Adapter);
            Connected   = new ConnectedSalveDevice(Adapter, 0);
            Unconnected = new UnconnectedSalveDevice(Adapter);

            Worker         = new BackgroundWorker();
            Worker.DoWork += new DoWorkEventHandler(Worker_DoWork);
        }
Example #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="disposing"></param>
        protected virtual void Dispose(bool disposing)
        {
            if (Disposed)
            {
                return;
            }

            if (disposing)
            {
                // Free any other managed objects here.
                if (Adapter != null)
                {
                    Adapter.Dispose();
                    Adapter.Disconnect();
                    Adapter = null;
                }
            }

            // Free any unmanaged objects here.
            //
            Disposed = true;
        }
Example #13
0
        static void Main(string[] args)
        {
            /*Adapter példányosítása*/
            CanAdapterDevice adapter = new CanAdapterDevice();

            /*Kapcsolódás egy létező adapterhez.*/
            adapter.Connect();
            /*Busz lezárás engedélyezése. */
            adapter.Attributes.Termination = true;
            /*Megnyitás az átviteli sebesség paraméterrel.*/
            adapter.Open(CanBaudRateCollection.Speed500kBaud);
            /*10 elemü üzenet tömb létrehozása.*/
            var rxMsgArray = new CanMessage[10];

            /*Bérkezett üzenet beolvasása a tömbe */
            adapter.Read(rxMsgArray, 0, adapter.Attributes.PendingRxMessages);
            /*Kapcsolat zárása*/
            adapter.Close();
            /*Kapcsolat bontása*/
            adapter.Disconnect();
            Console.Read();
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="adapter"></param>
 /// <param name="slaveMacId"></param>
 /// <param name="masterMacId"></param>
 public ConnectedSalveDevice(CanAdapterDevice adapter, int masterMacId)
 {
     this.Adapter     = adapter;
     this.MasterMacId = masterMacId;
 }
Example #15
0
 /// <summary>
 ///
 /// </summary>
 public DeviceNetIO()
 {
     Adapter = new CanAdapterDevice();
 }
        void AsyncTest(int msgCount, uint baudrate)
        {
            CanAdapterDevice adapterWriter = new CanAdapterDevice();
            var selectedAdapterWriter      = CanAdapterDevice.GetAdapters()[0]; //{CAN Bus Adpater - MCAN120803 3873366E3133 }

            adapterWriter.ConnectTo(selectedAdapterWriter);

            CanAdapterDevice adapterReader = new CanAdapterDevice();
            var selectedAdapterReader      = CanAdapterDevice.GetAdapters()[1]; //{CAN Bus Adpater - MCAN120803 387536633133 }

            adapterReader.ConnectTo(selectedAdapterReader);

            Stopwatch watch = new Stopwatch();

            if (adapterWriter.Attributes.State != CanState.SDEV_IDLE)
            {
                adapterWriter.Services.Reset();
            }

            if (adapterReader.Attributes.State != CanState.SDEV_IDLE)
            {
                adapterReader.Services.Reset();
            }

            adapterWriter.Attributes.Termination = true;
            adapterReader.Attributes.Termination = true;

            try
            {
                CanMessage[] txFrames = new CanMessage[msgCount];

                Action writer = () =>
                {
                    try
                    {
                        for (int i = 0; i < msgCount; i++)
                        {
                            txFrames[i] = CanMessage.MessageStdC8;
                            byte[] valuebytes = BitConverter.GetBytes((uint)i + 1);
                            Buffer.BlockCopy(valuebytes, 0, txFrames[i].Data, 0, valuebytes.Length);
                        }
                        adapterWriter.Write(txFrames);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                };


                CanMessage[] rxFrames = new CanMessage[msgCount];
                int          offset   = 0;

                watch.Start();
                long           startTick = DateTime.Now.Ticks;
                AutoResetEvent doneEv    = new AutoResetEvent(false);
                Action         reader    = () =>
                {
                    try
                    {
                        do
                        {
                            if (DateTime.Now.Ticks - startTick > 15000 * 10000)
                            {
                                throw new Exception("Timeout");
                            }

                            int length = adapterReader.Attributes.PendingRxMessages;
                            adapterReader.Read(rxFrames, offset, length);
                            //Console.WriteLine("Pending: " + length + "Length: " + offset );
                            offset += length;
                        } while (offset != msgCount);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        Console.WriteLine("RxTotal:" + adapterReader.Attributes.RxTotal.ToString());
                        Console.WriteLine("RxDrop:" + adapterReader.Attributes.RxDrop.ToString());
                    }
                    doneEv.Set();
                };

                adapterWriter.Open(baudrate);
                adapterReader.Open(baudrate);

                reader.BeginInvoke(null, null);
                Thread.Sleep(50);
                writer.BeginInvoke(null, null);

                doneEv.WaitOne();
                watch.Stop();

                double calcBps1 = ((msgCount * 8E+0) / (watch.ElapsedMilliseconds / 1000E+0));
                double calcBps2 = ((msgCount * 8E+0) / (((DateTime.Now.Ticks - startTick) / 10000E+0) / 1000E+0));

                uint rxTotal = adapterReader.Attributes.RxTotal;
                Console.WriteLine("Reader RxDrop: " + adapterReader.Attributes.RxDrop);
                Console.WriteLine("Writer TxDrop: " + adapterWriter.Attributes.TxDrop);
                Console.WriteLine("Átjött Host FIFO-jába: " + offset);
                Console.WriteLine("Számított Baudrate 1: " + calcBps1.ToString());
                Console.WriteLine("Számított Baudrate 2: " + calcBps2.ToString());
                adapterReader.Close();
                adapterWriter.Close();

                Assert.AreEqual(msgCount, rxTotal, "Az adapter FIFO-jába nem jött meg minden.");
                Assert.AreEqual(msgCount, offset, "A Host FIFO-jaba nem jött meg minden.");
            }
            catch
            {
                throw;
            }
            finally
            {
                adapterWriter.Disconnect();
                adapterReader.Disconnect();
            }
        }
 public UnconnectedSalveDevice(CanAdapterDevice adapter)
 {
     this.Adapter = adapter;
 }
 public MessageReaderAsynState(CanMessage[] frames, CanAdapterDevice adapter, int offset)
 {
     Frames  = frames;
     Adapter = adapter;
     Offset  = offset;
 }
Example #19
0
        static void Main(string[] args)
        {
            /*Adapter példányosítása*/
            CanAdapterDevice adapter = new CanAdapterDevice();

            /*Kapcsolódás egy létező adapterhez.*/
            adapter.Connect();
            /*Busz lezárás engedélyezése. */
            adapter.Attributes.Termination = true;
            /*Loopback moód engedélyezése*/
            adapter.Attributes.Loopback = true;
            /*Megnyitás az átviteli sebesség paraméterrel.*/
            adapter.Open(CanBaudRateCollection.Speed125000Baud);
            /*2 CAN üzenet tartalmazó tömb létrehozása a kimenő üzenetknek.*/
            CanMessage[] txMsgArray = new CanMessage[]
            {
                /*              ArbId     Data                       */
                new CanMessage(0x000001, new byte[] { 0x01, 0x02, 0x03 }),
                new CanMessage(0x000002, new byte[] { 0x04, 0x05, 0x06 }),
            };

            /*Üzenetek küldése*/
            adapter.Write(txMsgArray);

            /*2 elemü üzenet tömb létrehozása a bejövő üzeneteknek.*/
            var rxMsgArray = new CanMessage[2];
            /*Timeout figyeléshez megjegyezzük az beolvasás indításának időpontját.*/
            long timestampTicks = DateTime.Now.Ticks;
            bool isTimeout      = false;

            do
            {
                /*Ha 2db CAN üzenet várakozik a Bufferben, akkor kiolvassuk.*/
                if (adapter.Attributes.PendingRxMessages == 2)
                {
                    /*Bérkezett üzenet beolvasása a tömbe */
                    adapter.Read(rxMsgArray, 0, adapter.Attributes.PendingRxMessages);
                    /*Kilépés a do-while-ból*/
                    break;
                }
                /*Inditás óta eltelt már 5000ms?*/
                isTimeout = (DateTime.Now.Ticks - timestampTicks) > (5000 * 10000);
                /*Timeout-ig ismétli a ciklust...*/
            } while (!isTimeout);

            if (isTimeout)
            {
                Console.WriteLine("Timeout...");
            }
            else
            {
                foreach (CanMessage msg in rxMsgArray)
                {
                    Console.WriteLine("Incoming Msg:" + msg.ToString());
                }

                Console.WriteLine("Complete.");
            }
            /*Kapcsolat zárása*/
            adapter.Close();
            /*Kapcsolat bontása*/
            adapter.Disconnect();
            Console.Read();
        }