rtIOStreamRecv

Прием данных через канал связи

Описание

пример

errFlg = rtIOStreamRecv(streamID, dest, size, receivedDataSize) принимает данные через канал связи.

Примеры

Отправка и получение данных с процессора

Этот код от rtiostreamtest.c показывает, как отправлять и получать данные от целевого процессора.

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;
      }
   }
}

Входные параметры

свернуть все

Указатель на поток, возвращенный предыдущим вызовом в rtIOStreamOpen.

Указатель на начало буфера для полученных данных.

Размер данных для копирования в целевой буфер. Для архитектур, адресуемых по байтам, размер измеряется в байтах. Некоторые архитектуры DSP не являются адресуемыми по байтам. В этих случаях размер измеряется в количестве WORD, где sizeof(WORD) == 1.

Количество модулей данных, полученных и скопированных в буфер dest. Если данные не копируются, значение равняется нулю.

Выходные аргументы

свернуть все

Если функция запускается без ошибок, она возвращает нуль. В противном случае возвращается -1.

The rtiostream.h файл задает следующие макросы:

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

Введенный в R2009a