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