Одна вещь, которая может помочь, если используемый вами кабель соединен с пересеченным DTR / DSR, это означает, что когда ваша программа запускается, вы поднимаете DTR, а другое устройство видит, что DSR поднимается высоко, и, в свою очередь, поднимает его DTR, что повышает ваш DSR.
Если вы используете неизвестные кабели и общаетесь с устройствами, над которыми у вас нет контроля, вам придется использовать .Timeout.