protected virtual void Dispose(bool disposing) { if (_disposed) { return; } if (disposing) { NiCanTools.Close(_handle); } _disposed = true; }
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); }
public void Close() { NiCanTools.Close(_handle); IoLog.Instance.WirteLine("Close"); }
public void Open() { _handle = NiCanTools.Open(Interface, BaudRate); IoLog.Instance.WirteLine("Open"); }