DioDmGetWritePointer


Function

Retrieves the transfer position on the data buffer.

Format

Ret = DioDmGetWritePointer ( Id , Direction , WritePointer , Count , Carry )

Parameters

Id [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
Specify the device ID retrieved from DioInit.

Direction [ VB.NET: Short ] [ C, C++: short ] [ C#: short ] [ Python: ctypes.c_short ]
Set the transfer direction.

Definition

Value

[Dec]

Description

DIODM_DIR_IN

1

Input

DIODM_DIR_OUT

2

Output

WritePointer [ VB.NET: Integer ] [ C, C++: unsigned long * ] [ C#: out uint ] [ Python: ctypes.POINTER(ctypes.c_ulong) ]
Specify the address of the variable to store the transfer position.

Count [ VB.NET: Integer ] [ C, C++: unsigned long * ] [ C#: out uint ] [ Python: ctypes.POINTER(ctypes.c_ulong) ]
Specify the address of the variable to store the transfer count number.

Carry [ VB.NET: Integer ] [ C, C++: unsigned long * ] [ C#: out uint ] [ Python: ctypes.POINTER(ctypes.c_ulong) ]
Specify the address of the variable to store the carry count number.

Return Value

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

Definition

Value

[Dec]

Description

DIO_ERR_SUCCESS

0

Normal completed.

DIO_ERR_SYS_RECOVERED_FROM_STANDBY

7

Execute DioResetDevice function because the device has recovered from standby mode.

DIO_ERR_DLL_INVALID_ID

10001

Invalid ID specified.

DIO_ERR_DLL_CALL_DRIVER

10002

Not call the driver (Failure on DEVICE I/O CONTROL).

DIO_ERR_DLL_BUFF_ADDRESS

10100

Invalid data buffer address.

DIO_ERR_SYS_NOT_SUPPORTED

20001

This board couldn't use this function.

DIO_ERR_SYS_IODIRECTION

20500

Direction value is out of range.

The others (See also: Details of Error Code)

Initial Value

None

Remarks

It is possible to know where data are written on the data buffer. When both transfer count number and transfer position are 0, it indicates the state that no data are transferred, therefore, the actual written position is the previous value of the transfer count number retrieved by this function.

When using the DIO-32DM3-PE, the data is transferred to the PC side every 2-2048 samplings for optimization.
Therefore, there is such a possibility that the count doesn't work when the clocks input, but the sampling is performed.
When the transfer is completed, the rest of the data will also be transferred.

Example

Retrieves the transfer position on the data buffer for input transfer.

VB.NET

Dim Ret As Integer
Dim WritePointer As Integer
Dim Count As Integer
Dim Carry As Integer
Ret = DioDmGetWritePointer ( Id , DIODM_DIR_IN , WritePointer , Count , Carry )
 

C, C++

long Ret;
long WritePointer;
long Count;
long Carry;
Ret = DioDmGetWritePointer ( Id , DIODM_DIR_IN , &WritePointer , &Count , &Carry );
 

C#

int Ret;
uint WritePointer;
uint Count;
uint Carry;
Ret = dio.DmGetWritePointer ( Id , (short)CdioConst.DIODM_DIR_IN , out WritePointer , out Count , out Carry );
 

Python

Ret = ctypes.c_long()
WritePointer = ctypes.c_ulong()
Count = ctypes.c_ulong()
Carry = ctypes.c_ulong()
Ret.value = cdio.DioDmGetWritePointer ( Id , cdio.DIODM_DIR_IN , ctypes.byref(WritePointer) , ctypes.byref(Count) , ctypes.byref(Carry) )
 

See Also

DioDmTransferStart