// https://forum.arduino.cc/t/sscanf-bug-what-i-am-doing-wrong/1046254
const int rs485dir = 13 ;
uint32_t myBeginTime ;
uint32_t myEndTime ;
uint32_t bufferEmptyTime ;
void setup()
{
Serial.begin(9600) ;
Serial.println("block no block\n");
pinMode(rs485dir, OUTPUT) ;
myBeginTime = millis();
sendBlockingMessage() ;
myEndTime = millis();
Serial.print( " my blocking time measurment : ");
Serial.println(myEndTime - myBeginTime ) ;
delay(500);
myBeginTime = millis();
sendNonBlockingMessage() ;
myEndTime = millis();
}
void sendBlockingMessage()
{
for( int i = 0 ; i < 25 ; i ++ )
{
Serial.write('X') ;
}
Serial.println() ;
Serial.flush() ;
}
void sendNonBlockingMessage()
{
for( int i = 0 ; i < 25 ; i ++ )
{
Serial.write('X') ;// send 25x
}
Serial.println() ;
digitalWrite(rs485dir, HIGH ) ;
}
void loop()
{
if( Serial.availableForWrite() == 63
&& digitalRead( rs485dir ) )
{
bufferEmptyTime = millis() ;
Serial.print( " my non blocking time measurment : ");
Serial.println(myEndTime - myBeginTime ) ;
Serial.print("buffer is empty after: ");
Serial.println(bufferEmptyTime - myBeginTime ) ;
digitalWrite( rs485dir, LOW) ;
}
}