rtIOStreamRecv - Receive data through communication channel - MATLAB (original) (raw)

Main Content

Receive data through communication channel

Syntax

Description

[errFlg](#d126e42182) = rtIOStreamRecv([streamID](#d126e42101), [dest](#d126e42121), [size](#d126e42138), [receivedDataSize](#d126e42158)) receives data through a communication channel.

example

Examples

Send and Receive Data from Processor

This code from [rtiostreamtest.c](https://mdsite.deno.dev/matlab:edit%28fullfile%28matlabroot,'/toolbox/coder/rtiostream/src/rtiostreamtest/rtiostreamtest.c'%29%29) shows how to send and receive data from a target processor.

static void blockingIO(int send, unsigned long numMemUnits) { size_t sizeToTransfer = (size_t) numMemUnits; size_t sizeTransferred; IOUnit_T * ioPtr = (IOUnit_T *) &buff[0]; int status;

if (numMemUnits > BUFFER_SIZE)
{
    AckCode = stat_notEnoughSpace;
    AckArg0 = BUFFER_SIZE;
    return;
}

#ifdef HOST_WORD_ADDRESSABLE_TESTING
/* map to bytes */ sizeToTransfer *= MEM_UNIT_BYTES; #endif

while (sizeToTransfer > 0) { sizeTransferred = 0; /* Do the low level call */ status = send ? rtIOStreamSend(streamID, ioPtr, sizeToTransfer, &sizeTransferred) : rtIOStreamRecv(streamID, ioPtr, sizeToTransfer, &sizeTransferred);

  if (status != RTIOSTREAM_NO_ERROR) {
     if (AckCode == stat_OK) {
        AckCode = stat_RTIOSTREAM_ERROR;
        AckArg0 = data_counter;
     }
     return;
  }
  else {
     sizeToTransfer -= sizeTransferred;
     ioPtr += sizeTransferred;
  }

} }

Input Arguments

collapse all

Handle to the stream returned by a previous call tortIOStreamOpen.

Pointer to the start of the buffer for received data.

Size of data to copy into the destination buffer. For byte-addressable architectures, size is measured in bytes. Some DSP architectures are not byte-addressable. In these cases, size is measured in number of WORDs, wheresizeof(WORD) == 1.

Number of units of data received and copied into the bufferdest. If no data is copied, value is zero.

Output Arguments

collapse all

If the function runs without errors, it returns zero. Otherwise, it returns -1.

The rtiostream.h file defines these macros:

#define RTIOSTREAM_ERROR (-1) #define RTIOSTREAM_NO_ERROR (0)

Version History

Introduced in R2009a