示例#1
0
        public void SendReceiveWithBeginEnd()
        {
            using (SerialPortStream src = new SerialPortStream(SourcePort, 115200, 8, Parity.None, StopBits.One))
                using (SerialPortStream dst = new SerialPortStream(DestPort, 115200, 8, Parity.None, StopBits.One)) {
                    src.WriteTimeout = TimeOut; src.ReadTimeout = TimeOut;
                    dst.WriteTimeout = TimeOut; dst.ReadTimeout = TimeOut;
                    src.Open(); Assert.That(src.IsOpen, Is.True);
                    dst.Open(); Assert.That(dst.IsOpen, Is.True);

                    SendReceiveAsyncState state = new SendReceiveAsyncState {
                        src     = src,
                        dst     = dst,
                        sendBuf = new byte[src.WriteBufferSize],
                        recvBuf = new byte[src.WriteBufferSize + 10]
                    };
                    Random r = new Random();
                    r.NextBytes(state.sendBuf);

                    // Here we start the read and write in parallel. The read will wait up to c_Timeout for the first byte.
                    dst.BeginRead(state.recvBuf, 0, state.recvBuf.Length, SendReceiveAsyncReadComplete, state);
                    src.BeginWrite(state.sendBuf, 0, state.sendBuf.Length, SendReceiveAsyncWriteComplete, state);
                    if (!state.finished.WaitOne(30000))
                    {
                        Assert.Fail("BeginWrite/BeginRead test case timeout");
                    }
                }
        }
示例#2
0
 public static IAsyncResult BeginRead(this SerialPortStream stream, out Message message, AsyncCallback callback, object state)
 => stream.BeginRead((message = new Message()).MessageBytes, 0, Message.messageSize, callback, state);