Навигация:
<< >> Оглавление Указатель

Описание пользователя

Глава 3. Использование стандартных модулей автокомпиляции

§3.7. Краткий перечень вводимых в модель описаний и реакций на события

§3.7.10. Обмен данными по сети

Рассматриваются реакции на события, связанные с встроенными в RDS процедурами обмена данными по сети.

§3.7.10.1. Получены данные по сети

Это событие возникает при обмене данными по сети в блоке, для которого поступили данные с сервера. Стандартный модуль автокомпиляции не автоматизирует передачу данных между блоками по сети, желающие реализовать ее могут изучить §2.15 руководства программиста.

Текст реакции на получение данных вводится на вкладке «события» левой панели редактора модели: раздел «сеть», подраздел «получены данные». В классе блока для нее создается функция с именем rdsbcppNetReceive следующего вида:

  // Data received from the network
  void rdsbcppBlockClass::rdsbcppNetReceive( NetData)
  {
     … пользовательский текст реакции … 
  }

Параметр функции NetData – это указатель на структуру RDS_NETRECEIVEDDATA, описывающую поступившие данные:

  typedef struct {
     ConnId;              // Идентификатор соединения
     HostA;                // URL или IP-адрес сервера (UTF8)
     HostW;               // URL или IP-адрес сервера (UTF16)
    // Host;              // URL или IP-адрес сервера ()
     Port;                // Порт
     ChannelA;             // Имя канала (UTF8)
     ChannelW;            // Имя канала (UTF16)
    // Channel;           // Имя канала ()
     Id;                  // Принятое целое число
     StrA;                 // Принятая строка (UTF8)
     StrW;                // Принятая строка (UTF16)
    // Str;               // Принятая строка ()
     Buffer;                // Принятый буфер или NULL
     BufferSize;             // Размер принятого буфера
     SenderStation; // Идентификатор
                                  // машины-отправителя
     SenderBlock;     // Идентификатор блока
                                  // на машине-отправителе
  } ;
  typedef  *;

Поля структуры имеют следующий смысл:

ConnId (int)
Уникальный идентификатор сетевого соединения, возвращенный сервисной функцией при его создании.
HostA (RDSCSTR), HostW (RDSWCSTR), Host (RDSXCSTR)
Имя (URL) или IP-адрес сервера, с которым установлено соединение.
Port (int)
Номер сетевого порта, через который идет обмен данными.
ChannelA (), ChannelW (), Channel ()
Имя канала передачи данных, из которого поступили данные.
Id (int)
Целый идентификатор полученных данных (произвольное целое число, указанное передавшим данные блоком в вызове одной из функций передачи).
StrA (), StrW (), Str ()
Указатель на принятую по сети строку во внутренней памяти RDS.
Buffer (LPVOID)
Указатель на начало принятых двоичных данных во внутренней памяти RDS.
BufferSize (DWORD)
Размер (в байтах) принятых двоичных данных, на которые указывает поле Buffer.
SenderStation (RDS_NETSTATION)
Идентификатор машины-передатчика, то есть машины, на которой запущена копия RDS, в которую загружена схема, блок которой отправил эти данные.
SenderBlock (RDS_NETBLOCK)
Идентификатор блока-отправителя на машине-передатчике.

При написании моделей блоков без использования модуля автокомпиляции получению данных по сети соответствует константа RDS RDS_BFM_NETDATARECEIVED.


<< >> Оглавление Указатель