主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

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。

rtiostream.h 文件定义了这些宏:

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

版本历史记录

在 R2009a 中推出