That is the expected behavior.
When you perform an ibrd function call, you provide 2 vital pieces of information.
1) A timeout (via ibtmo or ibconfig). This sets up a time that NI-488.2 can abort the transfer if all of the data has not been received.
2) A byte-count. This sets up the maximum number of data bytes that NI-488.2 will receive.
NI-488.2 will continue the transfer until one of the following 3 conditions occurs:
1) You receive the last databyte of a transfer. This data byte will be received with the END condition.
2) You receive the maximum number of bytes that you configured the transfer to receive (i.e., ibrd 100 will return after it reads exactly 100 bytes from the bus)
3) Neither of the first two conditions is true and the timeout
period has elapsed. (i.e., after 10 seconds, you have not received 100 bytes and you have not received a byte with END).
If this is not expected (due to the overall programming), a few questions that come to mind.
1) Are you expecting the End signal? If you are and you are not receiving it, you may want to try a new cable or plug-in a GPIB analyzer to see what is happening on the bus.
2) When you say that all of the data has been read out, does this just mean the FIFOs are empty? Were any bytes actually received? Frequently timeout error occur when no bytes have been received. This means that you are trying to read from and instrument that is not sending you any data. This could be that you did not send it a valid query prior to reading from the device.