public void _0010_RunningStopSetFilterRun() { if (_adapterWriter.IsOpen) { _adapterWriter.Close(); } if (_adapterReader.IsOpen) { _adapterReader.Close(); } 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; _adapterWriter.Open(_targetBaudrate); Thread.Sleep(50); _adapterReader.Open(_targetBaudrate); UInt32 maskAndFilter = 0x000; CanMessage[] rxFrames = new CanMessage[128]; int offset = 0; int length = 0; long startTick = 0; bool isTimeout = false; for (int i = 0; i < 2; i++) { _adapterWriter.Write(new CanMessage[] { new CanMessage(0x295, new byte[] { 0x01, 0x02, 0x03 }) }); _adapterWriter.Write(new CanMessage[] { new CanMessage(0x296, new byte[] { 0x04, 0x05, 0x06 }) }); _adapterWriter.Write(new CanMessage[] { new CanMessage(0x4D9, new byte[] { 0x07, 0x08, 0x09 }) }); _adapterWriter.Write(new CanMessage[] { new CanMessage(0x503, new byte[] { 0x10, 0x11, 0x12 }) }); } startTick = DateTime.Now.Ticks; do { if (DateTime.Now.Ticks - startTick > 1000 * 10000) { isTimeout = true; } length = _adapterReader.Attributes.PendingRxMessages; _adapterReader.Read(rxFrames, offset, length); offset += length; } while (!isTimeout); Assert.AreEqual(2, rxFrames.Count(n => n.ArbitrationId == 0x295), "0x295/200ms"); Assert.AreEqual(2, rxFrames.Count(n => n.ArbitrationId == 0x295), "0x296/200ms"); Assert.AreEqual(2, rxFrames.Count(n => n.ArbitrationId == 0x4D9), "0x4D9/1000ms"); Assert.AreEqual(2, rxFrames.Count(n => n.ArbitrationId == 0x503), "0x503/1000ms"); _adapterReader.Services.Stop(); _adapterReader.Flush(); offset = 0; Array.Clear(rxFrames, 0, rxFrames.Length); maskAndFilter = 0x295; _adapterReader.Attributes.Mask = (0x000007FF & maskAndFilter) << 21; _adapterReader.Attributes.Filter = (0x000007FF & maskAndFilter) << 21; _adapterReader.Services.Start(); for (int i = 0; i < 2; i++) { _adapterWriter.Write(new CanMessage[] { new CanMessage(0x295, new byte[] { 0x01, 0x02, 0x03 }) }); _adapterWriter.Write(new CanMessage[] { new CanMessage(0x296, new byte[] { 0x04, 0x05, 0x06 }) }); _adapterWriter.Write(new CanMessage[] { new CanMessage(0x4D9, new byte[] { 0x07, 0x08, 0x09 }) }); _adapterWriter.Write(new CanMessage[] { new CanMessage(0x503, new byte[] { 0x10, 0x11, 0x12 }) }); } offset = 0; isTimeout = false; startTick = DateTime.Now.Ticks; do { if (DateTime.Now.Ticks - startTick > 1000 * 10000) { isTimeout = true; } length = _adapterReader.Attributes.PendingRxMessages; _adapterReader.Read(rxFrames, offset, length); offset += length; } while (!isTimeout); Assert.AreEqual(2, rxFrames.Count(n => n.ArbitrationId == 0x295), "0x295/200ms"); Assert.AreEqual(0, rxFrames.Count(n => n.ArbitrationId == 0x296), "0x296/200ms"); Assert.AreEqual(0, rxFrames.Count(n => n.ArbitrationId == 0x4D9), "0x4D9/1000ms"); Assert.AreEqual(0, rxFrames.Count(n => n.ArbitrationId == 0x503), "0x503/1000ms"); _adapterReader.Services.Stop(); _adapterReader.Flush(); offset = 0; Array.Clear(rxFrames, 0, rxFrames.Length); maskAndFilter = 0x00; _adapterReader.Attributes.Mask = (0x000007FF & maskAndFilter) << 21; _adapterReader.Attributes.Filter = (0x000007FF & maskAndFilter) << 21; _adapterReader.Services.Start(); for (int i = 0; i < 2; i++) { _adapterWriter.Write(new CanMessage[] { new CanMessage(0x295, new byte[] { 0x01, 0x02, 0x03 }) }); _adapterWriter.Write(new CanMessage[] { new CanMessage(0x296, new byte[] { 0x04, 0x05, 0x06 }) }); _adapterWriter.Write(new CanMessage[] { new CanMessage(0x4D9, new byte[] { 0x07, 0x08, 0x09 }) }); _adapterWriter.Write(new CanMessage[] { new CanMessage(0x503, new byte[] { 0x10, 0x11, 0x12 }) }); } offset = 0; isTimeout = false; startTick = DateTime.Now.Ticks; do { if (DateTime.Now.Ticks - startTick > 1000 * 10000) { isTimeout = true; } length = _adapterReader.Attributes.PendingRxMessages; _adapterReader.Read(rxFrames, offset, length); offset += length; } while (!isTimeout); Assert.AreEqual(2, rxFrames.Count(n => n.ArbitrationId == 0x295), "0x295/200ms"); Assert.AreEqual(2, rxFrames.Count(n => n.ArbitrationId == 0x296), "0x296/200ms"); Assert.AreEqual(2, rxFrames.Count(n => n.ArbitrationId == 0x4D9), "0x4D9/1000ms"); Assert.AreEqual(2, rxFrames.Count(n => n.ArbitrationId == 0x503), "0x503/1000ms"); }