Problem dürfte eher sein, dass du deine RS232 falsch konfiguriert hast.
Die steht auf "Termination Char" enabled, das Trennzeichen ist ebenfalls auf Standardwert=Linefeed. Das bedeutet, dass dein VISA-Read auf ein Linefeed als Ende einer Nachricht wartet.
Jetzt eine Vermutung: Deine Befehle, die du sendest, beendest du mit einem "Carriage Return". Ist möglicherweise das Trennzeichen für den Empfang von Nachrichten auch ein "Carriage Return"? Das kannst aber
nur du nach Blick ins Handbuch beantworten.
Weiteres Problem: Zu dem Fall "Visa Read" kommst du bei deinem Programm wahrscheinlich NIE, denn:
Direkt nach Absetzen einer Abfrage schaust du nach, wie viele Bytes im Empfangbuffer sind. So schnell ist keine RS232, dass da direkt danach der Zähler schon größer Null ist. Aber vielleicht brauchst du das gar nicht, denn wenn meine Vermutung mit CR als Trennzeichen zutrifft, dann kannst du dir die "Bytes at Port" Abfrage sparen.
Gruß, Jens
EDIT: Nachtrag: Ich habe inzwischen
das Protokoll gefunden. Das Linefeed als Abschlusszeichen für den Empfang von Nachrichten kannst du doch verwenden. Trotzdem oder gerade deshalb solltest du auf die "Bytes at Port"-Abfrage verzichten. VISA-Read erledigt für dich das Warten, bis die Antwort vollständig empfangen wurde.