我尝试将 CLIPS 连接到我的 C 程序。规则集将从外部 .clp 文件加载到 CLIPS。我的新 C 程序将以固定的时间间隔设置新的事实(例如(温度 35C)),这些事实将代表来自某些温度传感器的当前测量值。然后将启动专家系统并根据提供的测量结果做出一些结论并采取必要的行动。结论将以事实的形式出现(Answer-is x)。
如何以 C 变量的形式从 CLIPS 读取所需的事实字段?例如,如果感兴趣的事实是 (Answer-is, x),并且如果我知道第一个字段是 Answer-is,我如何让我的 C 程序找到该事实并读取 x?
可以帮助您理解我想做的示例代码如下:
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);
}