AioSetAoTransferData


Function

Sets the user buffer that stores the output data.
This settings is necessary when the transfer mode of the conversion data that is set by AioSetAoTransferMode function is User buffer mode.
This function needn't be executed if the transfer mode of the conversion data is Device buffer.

Format

Ret = AioSetAoTransferData ( Id , DataNumber , Buffer )

Parameters

Id [ VB.NET : Short ] [ C, C++ : short ] [ C# : short ] [ Python : ctypes.c_short ]
Specifies the ID retrieved from AioInit function.

DataNumber [ VB.NET : Integer ] [ C, C++ : long ] [ C# : int ] [ Python : ctypes.c_long ]
Specifies the array size of the user buffer that you want to set.  please specify the size that is the number of elements in the array. 

Buffer [ VB.NET : IntPtr ] [ C, C++ : long * ] [ C# : IntPtr ] [ Python : ctypes.POINTER(ctypes.c_long) ]
Specifies the address of the user buffer.

Return value

Ret [ VB.NET : Integer ] [ C, C++ : long ] [ C# : int ] [ Python : ctypes.c_long ]

Return values

Content

0

Normality completion

7

Execute AioResetDevice function because the device has recovered from standby mode

10001

Invalid Id was specified
Use the Id retrieved from AioInit to specify the Id in this function.

10002

AIO driver can't be called
At first, perform AioInit function.

13600

The value of DataNumber is outside the designated range of the function

13601

Pointer to Buffer is NULL
Specify the address of variable to parameter.

13602

It failed in securing a buffer for Bus-Master transfer

20001

This function can't be used by this device

20002

Can not use while by another device works
To use this function, analog output operation must be stopped.

20003

Can not use because another process is using the device
When another process is using the device, all functions except for those that support multi-process can not be performed.

23600

The value of DataNumber is outside the designated range of the device being used

Remarks

When the conversion data are stored to the user buffer, please refer to [User buffer setting]

When the user buffer is set, in advance, you need calculate the number of packets (=the number of elements in the array) of one generating.  If you use AioGetAoSamplingDataSize function, the number of packets for one generating can be retrieved.

This function cannot be used on devices without the analog output function.
If the device is in operation, the function cannot be performed.
Before this function is executed, please perform AioSetAoMemoryType function.

Specifications based on devices

DataNumber (array size) can be specified within the following ranges for each device.

AIO-163202G-PE
AIO-163202UG-PE
AIO-123202G-PE
AIO-123202UG-PE

DataNumber that can be set is 1 to 536870912 (2 GBytes).

 

These devices implement bus master transfers with a 64-bit bus width.

Bus master transfer with 64-bit bus width has no buffer size limit depending on the OS used.

AIO-163202F-PE
ADA16-32/2(PCI)F

These devices implement bus master transfers with a 32-bit bus width.

Bus master transfers with a 32-bit bus width are subject to buffer size restrictions depending on the OS used.

The hardware is designed to enable bus master transfers of up to 64MBytes.

However, DataNumber cannot be set up to 16777216 (64MBytes) due to OS restrictions. please note.

The details are as follows.

OS used

Range of settings

Windows 10 Version 1703 or later (including Windows 11)

DataNumber that can be set is 1 to 524288 (for 2MBytes).

Windows 10 Version 1607 or earlier

DataNumber that can be set is 1 to 262144 (1MByte).

 

*Depending on how the physical address space is mapped, it may not be possible to set the bus master buffer size up to the maximum area.

Example

Sets the user buffer with the size of 10000 packets.

VB.NET

Please refer to Notes of Using VisualBasic .NET
 

C, C++

long Ret;
long Buffer[10000];
Ret = AioSetAoTransferData ( Id , 10000 , &Buffer[0] );
 

C#

Please refer to Notes of Using Visual C#
 

Python

Ret = ctypes.c_long()
BufferType = ctypes.c_long * 10000
Buffer = BufferType()
Ret.value = caio.AioSetAoTransferData ( Id , 10000 , Buffer )