public void _0012_WriteBeginReadCallback() { 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); for (int i = 0; i < 12; 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 }) }); } CanMessage[] rxFrames = new CanMessage[128]; var state = new MessageReaderAsynState(rxFrames, _adapterReader, 0); _adapterReader.BeginRead(rxFrames, state.Offset, 3, ReadComplete, state); Thread.Sleep(1000); Assert.AreEqual(12, rxFrames.Count(n => n.ArbitrationId == 0x295), "0x295/200ms"); Assert.AreEqual(12, rxFrames.Count(n => n.ArbitrationId == 0x296), "0x296/200ms"); Assert.AreEqual(12, rxFrames.Count(n => n.ArbitrationId == 0x4D9), "0x4D9/1000ms"); }