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");
        }