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

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.2. Управление работой RDS и функции общего назначения

А.5.2.18. rdsExecuteCommand – выполнить общесистемную команду

Функция rdsExecuteCommand ставит команду, указанную в ее параметрах, в очередь на исполнение.

  void  rdsExecuteCommandA(
    int Command,     // Команда RDS_SYSCMD_*
     Flags,     // Флаги
     Param1,  // Первый параметр команды (UTF8)
     Param2   // Второй параметр команды (UTF8)
  );
  void  rdsExecuteCommandW(
    int Command,     // Команда RDS_SYSCMD_*
     Flags,     // Флаги
     Param1, // Первый параметр команды (UTF16)
     Param2  // Второй параметр команды (UTF16)
  );
  // 
  void  rdsExecuteCommand(
    int Command,     // Команда RDS_SYSCMD_*
     Flags,     // Флаги
     Param1, // Первый параметр команды (кодировка по умолчанию)
     Param2  // Второй параметр команды (кодировка по умолчанию)
  );

Тип указателя на эту функцию

RDS_VIDwSS (для UTF8) или RDS_VIDwWsWs (для UTF16)

Параметры

Command (int)
Одна из констант RDS_SYSCMD_* (см. ниже), указывающая на исполняемую RDS команду.
Flags (DWORD)
Битовые флаги команды (зависят от значения Command).
Param1 (RDSCSTR, RDSWCSTR, RDSXCSTR)
Указатель на строку с первым параметром команды (зависит от значения Command).
Param2 (, , )
Указатель на строку со вторым параметром команды (зависит от значения Command).

Примечания

RDS поддерживает очередь команд, относящихся ко всей загруженной схеме и выполняемых строго последовательно. Если вызов rdsExecuteCommand, поставивший в очередь команду А, предшествует вызову, поставившему в очередь команду Б, команда Б не начнет выполняться до тех пор, пока не завершится выполнение команды А. Таким образом можно, например, скомандовать RDS сохранить текущую загруженную схему, а затем загрузить новую: загрузка новой не начнется, пока не будет сохранена старая.

Выполняемая команда задается в параметре Command одной из следующих констант:

Command Команда и ее параметры
RDS_SYSCMD_STARTCALC Запустить расчет. Параметры Flags, Param1 и Param2 не используются.
RDS_SYSCMD_LOADFILE Загрузить схему из файла. Параметр Flags не используется. В параметре Param1 передается указатель на строку, содержащую полный путь к файлу схемы. В параметре Param2 передается либо указатель на строку, имитирующую дополнительные параметры командной строки RDS, которые могут быть разобраны блоками загруженной схемы, либо NULL.
RDS_SYSCMD_SAVEFILE Сохранить схему в файл. Параметры Flags и Param2 не используются. В параметре Param1 передается указатель на строку, содержащую полный путь к файлу схемы.
RDS_SYSCMD_LOADTEMPLATE Загрузить шаблон схемы из файла. Параметры Flags, Param1 и Param2 используются так же, как в команде RDS_SYSCMD_LOADFILE.
RDS_SYSCMD_MESSAGEBOX Вывести сообщение пользователю. В параметре Flags передаются флаги сообщения, аналогичные функции Windows API MessageBox и сервисной функции RDS rdsMessageBox. В параметре Param1 передается указатель на строку с текстом сообщения. В параметре Param2 передается указатель на строку с заголовком окна сообщения. Этот вызов отличается от rdsMessageBox только тем, что он не выводит сообщение пользователю немедленно, а ставит его в очередь.
RDS_SYSCMD_EDITMODE Переводит RDS в режим редактирования. Параметры Flags, Param1 и Param2 не используются.
RDS_SYSCMD_CALCMODE Переводит RDS в режим моделирования. Параметры Flags, Param1 и Param2 не используются.
RDS_SYSCMD_RESETCALC Сбрасывает расчет во всей схеме. Параметры Flags, Param1 и Param2 не используются.
RDS_SYSCMD_DELAYEDBLOCKCALL Вызывает модель одного из блоков загруженной схемы в главном потоке для реакции на событие RDS_BFM_DELAYEDCALLCOMMAND. В параметре Param1 передается указатель на строку с полным именем вызываемого блока. Значение параметра Flags и строка, указатель на которую передан в параметре Param2, без изменения передаются в реакцию на событие .

Следует помнить, что при загрузке новой схемы очередь команд очищается, поэтому все команды, поставленные в очередь после RDS_SYSCMD_LOADFILE и RDS_SYSCMD_LOADTEMPLATE будут проигнорированы. Например, последовательность

  rdsExecuteCommand(RDS_SYSCMD_LOADFILE,0,"c:\\rds\\Scheme.rds",NULL);
  rdsExecuteCommand(RDS_SYSCMD_STARTCALC,0,NULL,NULL);

не приведет к запуску расчета после загрузки новой схемы: сразу после загрузки очередь команд будет очищена, и команда RDS_SYSCMD_STARTCALC не будет воспринята RDS.

Технически, вызов rdsExecuteCommand приводит к помещению команды и ее параметров в очередь сообщений Windows, обрабатываемых RDS, поэтому команды не будут выполняться до тех пор, пока RDS в очередной раз не войдет в цикл обработки сообщений. Если, например, модель какого-нибудь блока организует длительный цикл в главном потоке, команды не будут выполняться до завершения этого цикла.

См. также

Сервисные функции со строковыми параметрами и результатом, RDS_BFM_DELAYEDCALLCOMMAND, rdsEnableCommandQueue, rdsStartCalc, rdsStopCalc, rdsResetSystemState, rdsMessageBox.


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