Если вы используете System.IO.Ports.SerialPort, то я не верю, что что-то встроено. Вам нужно было бы кодировать это самостоятельно.
Есть ли причина, по которой вы не можете просто использовать событие DataReceived и обрабатывать данные по мере их поступления?
Это сложно, потому что вам приходится иметь дело с тем фактом, что прослушиватель SerialPort работает в другом потоке, поэтому вам может потребоваться беспокоиться о безопасности потока, но вы можете установить глобальную переменную DateTime и обновить ее в событии DataReceived, и затем проверьте это в своем коде, чтобы увидеть, было ли последнее время получения данных больше n секунд.