what's your setting when opening the port? if you have the termination enabled, then there might be your problem, the read vi will always return either by timeout, or there is a termination character in the stirng. since you are retuning data stream which can be anything (including the termination character), the read vi will read that properly.
i'd suggest:
1. disable the termination character
2. set the timeout input to the VISA read to a reasonable value for reading 1024 characters, however, this may slow down your application's responsiveness. Your approach is actually the right one, but you should always read the port, append the data to your previous reading and analyze it when it reaches to a desired length.
-Joe