0

My function can read and send serial strings.
Read and write is in a while loop.
Right now the code stops at await dataReader.LoadAsync until a serial essage is received.
How do I make a timeout for this?
E.g. if nothing is received after 500ms, cancel await dataReader.LoadAsync and finish the loop.

I experimented with cancallationtokens, but without any success.

 public async void Serial() { //configure serial setting //configure serial setting //configure serial setting //configure serial setting // Seriell while while (true) { //send dataWriter.WriteString(txBuffer); bytesWritten = await SerialPort.OutputStream.WriteAsync(dataWriter.DetachBuffer()); textblock_DebugTx_live.Text = txBuffer; //Ausgabe Debug Tx Senden //receive uint bytesToRead = await dataReader.LoadAsync(maxReadLength); string rxBuffer = dataReader.ReadString(bytesToRead); textblock_DebugRx_Gas_live.Text = rxBuffer; //Ausgabe Wert Alkoholsensor } //Seriell while } //Seriell 

When I try the follow, I get errors.
- maxReadLenght goes into task and not to bytesToRead.
- error at await task "uint contains no definition for GetWaiter"
- CancellationToken is invalid

 //receive uint bytesToRead; int timeout = 1000; var task = await dataReader.LoadAsync(maxReadLength); if (await Task.WhenAny(task, Task.Delay(timeout, CancellationToken)) == task) { // Task completed within timeout. // Consider that the task may have faulted or been canceled. // We re-await the task so that any exceptions/cancellation is rethrown. await task; } else { // timeout/cancellation logic } string rxBuffer = dataReader.ReadString(bytesToRead); 
0

1 Answer 1

0

I'd look into Task.WhenAny and Task.Delay.

This is more or less a duplicate of:

Asynchronously wait for Task<T> to complete with timeout

Sign up to request clarification or add additional context in comments.

1 Comment

when I do it that way, I get errors. I edited my question and included my try to implement your advise.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.