viSetBuf
Purpose
Sets the size for the formatted I/O and/or low-level I/O communication buffer(s).
C Syntax
ViStatus viSetBuf(ViSession vi, ViUInt16 mask, ViUInt32 size)
Visual Basic Syntax
viSetBuf&(ByVal vi&, ByVal mask%, ByVal size&)
Resource Classes
GPIB INSTR, GPIB INTFC, GPIB-VXI INSTR, Serial INSTR, TCPIP INSTR, TCPIP SOCKET, VXI INSTR, VXI SERVANT
Parameters
Name | Direction | Description |
---|---|---|
vi |
IN |
Unique logical identifier to a session. |
mask |
IN |
Specifies the type of buffer. |
size |
IN |
The size to be set for the specified buffer(s). |
Return Values
Completion Codes | Description |
---|---|
VI_SUCCESS |
Buffer size set successfully. |
VI_WARN_NSUP_BUF |
The specified buffer is not supported. |
Error Codes | Description |
---|---|
VI_ERROR_INV_OBJECT |
The given session reference is invalid. |
VI_ERROR_RSRC_LOCKED |
Specified operation could not be performed because the resource identified by vi has been locked for this kind of access. |
VI_ERROR_ALLOC |
The system could not allocate the buffer(s) of the specified size because of insufficient resources. |
VI_ERROR_INV_MASK |
The system cannot set the buffer for the given mask. |
Description
The viSetBuf() operation changes the buffer size of the read and/or write buffer for formatted I/O and/or serial communication. The mask parameter specifies the buffer for which to set the size. The mask parameter can specify multiple buffers by bit-ORing any of the following values together.
Flags | Interpretation |
---|---|
VI_READ_BUF (1) |
Formatted I/O read buffer. |
VI_WRITE_BUF (2) |
Formatted I/O write buffer. |
VI_IO_IN_BUF (16) |
Low-level I/O receive buffer. |
VI_IO_OUT_BUF (32) |
Low-level I/O transmit buffer. |
A call to viSetBuf() flushes the session's related Read/Write buffer(s). Although you can explicitly flush the buffers by making a call to viFlush(), the buffers are flushed implicitly under some conditions. These conditions vary for the viPrintf() and viScanf() operations.
Since not all serial drivers support user-defined buffer sizes, it is possible that a specific implementation of VISA may not be able to control this feature. If an application requires a specific buffer size for performance reasons, but a specific implementation of VISA cannot guarantee that size, then it is recommended to use some form of handshaking to prevent overflow conditions.
In previous versions of VISA, VI_IO_IN_BUF was known as VI_ASRL_IN_BUF and VI_IO_OUT_BUF was known as VI_ASRL_OUT_BUF.
Related Topics
Automatically Flushing the Formatted I/O Buffers
Controlling the Serial I/O Buffers
Formatted I/O Read and Low-Level I/O Receive Buffers
Formatted I/O Write and Low-Level I/O Transmit Buffers
Manually Flushing the Formatted I/O Buffers