rtIOStreamSend

Отправьте данные через канал связи

Описание

пример

errFlag = rtIOStreamSend(streamID, src, size, sizeSent) отправляет данные через коммуникационный поток.

API для rtIOStream функции независимы от физического уровня, через который вы отправляете данные, например, RS232, Ethernet или Сеть области контроллера (CAN). Выбор физического уровня влияет на достижимые скорости передачи данных для связи между вашим компьютером разработчика и целевым процессором.

Для процессора в цикле (PIL) приложение нет никакого минимального требования скорости передачи данных. Чем выше скорость передачи данных, тем быстрее симуляция запускается.

Коммуникационный драйвер устройства может потребовать дополнительных специфичных для оборудования или специфичных для канала параметров конфигурации. Например:

  • Канал CAN может потребовать спецификации узла CAN, который используется.

  • Канал TCP/IP может потребовать настройки порта или статического IP-адреса.

  • Канал CAN может потребовать спецификации ID сообщения CAN и приоритета.

Когда вы реализуете rtIOStream функции драйвера, предоставьте этому данные конфигурации, например, жестким кодированием данные или путем предоставления аргументов к rtIOStreamOpen.

Примеры

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

Этот код от 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 не с байтовой адресацией. В этих случаях размер измеряется в количестве СЛОВ, где sizeof(WORD) == 1.

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

свернуть все

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

rtiostream.h файл задает их макросы:

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

Размер передаваемых данных, который меньше чем или равен size. Если данные не передаются, значение является нулем.

Представленный в R2009a