SerialPort.ReadLine определен для блокировки "до первого появления значения NewLine", где NewLine по умолчанию - перевод строки. Вы отправляете перевод строки в своем потоке? Обратите внимание, что символ перевода строки (ASCII 0x0A) отличается от возврата каретки (ASCII 0x0D), который вы, возможно, отправляете.
Вы можете переопределить NewLine, если необходимо, или, если конец строки не кажется правильным, вы можете прочитать до заданной строки с помощью SerialPort.ReadTo . Вы также можете установить тайм-аут чтения .
Вы можете предпочесть чтение заданного количества байтов из порта, а не строки, с одной из перегрузок SerialPort.Read .
Если ничего из этого не применимо, убедитесь, что вы на самом деле отправляете данные в том месте, где вы думаете - откройте HyperTerminal / TeraTerm / ваш любимый последовательный терминал, настройте его с теми же настройками последовательного порта, которые вы использовали выше, и убедитесь, что вы видите данные, которые ожидаете увидеть.