Esempio n. 1
0
        async Task SimpleCommandTxRxAsync(ISweepCommand cmd)
        {
            var buffer = new byte[cmd.ExpectedAnswerLength];

            // throwaway stuff in the RX buffer!
            serialPort.DiscardInBuffer();

            // TX then RX
            await serialPort.WriteAsync(cmd.Command.Select(x => (byte)x).ToArray(), 0, cmd.Command.Length);
            var bytesRead = await serialPort.ReadAsync(buffer, 0, cmd.ExpectedAnswerLength);

            if(bytesRead == cmd.ExpectedAnswerLength)
            {
                cmd.ProcessResponse(buffer.Select(x => (char)x).ToArray());
            }
            else
            {
                throw new SweepProtocolErrorException(
                    $"Answer was {bytesRead} bytes long instead of expected {cmd.ExpectedAnswerLength}",
                    buffer.Select(x => (char)x).ToArray());
            }           
        }
Esempio n. 2
0
 void SimpleCommandTxRx(ISweepCommand cmd)
 {
     SimpleCommandTxRxAsync(cmd).Wait();
 }