在瀏覽器中,您可以指定最終元件的名稱及位置。您也可以指定要對映至元件的元素、任何併入檔的位置,以及要在編譯期間進行鏈結的程式庫、額外來源及標準標頭。
如果元件是可執行檔,Rational Rhapsody 會產生其規格檔案及實作檔案,檔名分別是 Main<component>.h 和 Main<component>.c。 這些檔案是針對作用中的元件所命名的。例如,如果作用中元件名為 DefaultComponent,且此元件是個執行檔,則其原始檔名稱為 MainDefaultComponent.h 和 MainDefaultComponent.c。 如果元件是個程式庫,這些檔案的名稱只是 <component>.h 和 <component>.c(沒有字首 "Main")。
元件規格 (.h) 檔案會宣告元件及其起始設定元,還有清理方法。 例如:
/************************************************ . . . #ifndef MainDefaultComponent_H #define MainDefaultComponent_H /*---------------------------------------------*/ /* MainDefaultComponent.h */ /*---------------------------------------------*/ /* Constructors and destructors:*/ void DefaultComponent_Init(); void DefaultComponent_Cleanup(); #endif /************************************************ File Path : DefaultComponent\DefaultConfig\ MainDefaultComponent.h ************************************************/
.
.
.
#include "MainDefaultComponent.h"
#include <oxf/Ric.h>
#include "Default.h"
/*---------------------------------------------*/
/* MainDefaultComponent.c */
/*---------------------------------------------*/
void DefaultComponent_Init() {
Default_OMInitializer_Init();
}
void DefaultComponent_Cleanup() {
Default_OMInitializer_Cleanup();
}
int main(int argc, char* argv[]) {
if(RiCOXFInit(argc, argv, 6423, "", 0, 0)) {
DefaultComponent_Init();
{
/*#[ configuration
DefaultComponent\DefaultConfig */
/* your code goes here */;
/*#]*/
}
RiCOXFStart(FALSE);
DefaultComponent_Cleanup();
return 0;
}
else return 1;}
/************************************************
File Path : DefaultComponent\DefaultConfig\
MainDefaultComponent.c
************************************************/
元件規格檔案包括 Ric.h 檔案,其中會定義 IBM Rational Rhapsody Developer for C 的即時架構。
主程式迴圈名為 RiCOXFInit(),是架構提供的其中一個函數。此架構起始設定函數會執行下列作業:
如果 RiCOXFInit() 順利返回,則 main() 函數會執行在配置的「起始設定」標籤中所輸入的任何起始設定碼。main() 函數接著會呼叫函數以起始設定元件(例如,DefaultComponent_Init())。 此函數會依序呼叫要起始設定元件中所含任何套件的函數。
一旦元件已起始設定,main() 函數會呼叫 RiCOXFStart() 函數以啟動主要作業。依預設,產生的程式碼會將參數值 FALSE 傳遞給 OXFStart() 函數。 這表示系統不會分出新作業,且模型會在主要系統執行緒上執行。
如果您正在建立 GUI 應用程式,而已編譯的元件是個程式庫,其不得干擾主程式執行緒,則您要傳遞值 TRUE 至 RiCOXFStart(),以防止此程式庫控制系統。
RiCOXFInit() 及 RiCOXFStart() 函數會一起啟動 Rational Rhapsody 模型執行。必須在模型可以開始接收事件之前呼叫這兩個函數。如果元件是個將會與其他應用程式鏈結的程式庫(例如,GUI 應用程式),則 Rational Rhapsody 不會為其產生 main() 函數。您必須在主程式迴圈過程中,撰寫程式碼來呼叫這兩個函數,首先呼叫 RiCOXFInit(),然後呼叫 RiCOXFStart(),以便應用程式啟動事件處理。
如果您的動畫埠號在 rhapsody.ini 檔案中設定為任何埠號,並非預設值 6423,您必須將正確的埠號作為第三個參數傳遞給 RiCOXFInit()。
例如,在家用暖氣系統範例中,GUI 應用程式的程式進入點(hhsproto 元件)是定義在 hhsprdlg.cpp 檔案中,並具有下列呼叫:
RiCOXFInit(NULL, NULL, 6423, "", 0, 0);
RiCOXFInit() 的第三個引數 6423 是預設的動畫埠號。如果您的動畫埠設定為不同號碼,您可以編輯此引數以符合使用中的埠號(例如,6424)。否則,動畫不會運作。
當最後一個事件已處理完成,模型也已達到終止點,main() 函數會呼叫要清除元件的函數(例如,DefaultComponent_Cleanup())。
<project_dir>\<component_dir>\<config_dir>