CLIPS を C プログラムに接続しようとしています。一連のルールが外部の .clp ファイルから CLIPS にロードされます。私の新しい C プログラムは、一定の時間間隔で、いくつかの温度センサーからの現在の測定値を表す新しい事実 (例 (温度 35C)) を設定します。次に、エキスパート システムが開始され、いくつかの結論が下され、提供された測定値に基づいて必要なアクションが実行されます。結論は事実の形になります (答えは x です)。
CLIPS から目的のファクト フィールドを C variable の形式で読み取るにはどうすればよいですか? たとえば、関心のある事実が (Answer-is, x) で、最初のフィールドが Answer-is であることがわかっている場合、その事実を見つけて x を読み取るように C プログラムを作成するにはどうすればよいでしょうか?
私がやりたいことを理解するのに役立つコード例は次のとおりです。
int main(int argc,char *argv[]) {
void *theEnv;
theEnv = CreateEnvironment();
InitializeEnvironment();
Clear();
Reset();
// Load rules to CLIPS
Load("example.clp");
// Set facts and start CLIPS
AssertString("(TemperatureSensor1 35)");
AssertString("(TemperatureSensor2 32)");
AssertString("(TemperatureSensor2 41)");
Run(-1L);
// Extract expert system answer to C
// Read second field of generated fact from the example.clp
// which is in the form like (Answer-is xxx)
// ????????????????????????????
// This part I do not know ....
// ????????????????????????????
return(-1);
}