示例#1
0
        protected virtual void Dispose(bool disposing)
        {
            if (_disposed)
            {
                return;
            }

            if (disposing)
            {
                NiCanTools.Close(_handle);
            }
            _disposed = true;
        }
示例#2
0
        public void Read(out byte[] data, int tiemoutMs)
        {
            int  items     = 0;
            long startTick = DateTime.Now.Ticks;

            data = null;
            var  rx      = new NiCan.NCTYPE_CAN_STRUCT();
            bool isFound = false;

            do
            {
                if (DateTime.Now.Ticks - startTick > tiemoutMs * 10000)
                {
                    throw new Iso15765TimeoutException("P2 Max Expired,Read Timeout.");
                }

                items = NiCanTools.ReadPending(_handle);
                if (items != 0)
                {
                    for (int i = 0; i < items; i++)
                    {
                        NiCanTools.NiCanStatusCheck(NiCan.ncRead(_handle, NiCan.CanStructSize, ref rx));
                        UInt32 arbId    = rx.ArbitrationId & 0x1FFFFFFF;
                        byte[] datatemp = new byte[]
                        { rx.Data0,
                          rx.Data1,
                          rx.Data2,
                          rx.Data3,
                          rx.Data4,
                          rx.Data5,
                          rx.Data6,
                          rx.Data7, };
                        data = new byte[rx.DataLength];
                        Buffer.BlockCopy(datatemp, 0, data, 0, rx.DataLength);
                        IoLog.Instance.WirteLine("Rx: 0x" + arbId.ToString("X4") + " " + "Data:" + Tools.ByteArrayToCStyleString(data));
                        if (arbId == ReceiveId)
                        {
                            isFound = true;
                        }
                    }
                }
            } while (!isFound);
        }
示例#3
0
 public void Close()
 {
     NiCanTools.Close(_handle);
     IoLog.Instance.WirteLine("Close");
 }
示例#4
0
 public void Open()
 {
     _handle = NiCanTools.Open(Interface, BaudRate);
     IoLog.Instance.WirteLine("Open");
 }