Hi Van,
If you have a termination character enabled, then the VISA read will always return after receiving this character, regardless of whether you ask for 4 or 400 bytes.
Maybe this is your problem? If you haven't disabled this function explicitly, it might be active. I have had problems turning this off in certain VISA versions however.
By the way, the VISA Set buffer size is used for allocating space for data not yet read by VISA, not for each read. Setting this value high will make sure you don't "lose" data, but won't affect the amount of data transferred at each read.
Let me know how you get on
Hope this helps
Shane.
Using LV 6.1 and 8.2.1 on W2k (SP4) and WXP (SP2)