J'essaie d'affirmer un nouveau fait dans CLIPS dans l'application embarquée. J'ai essayé de deux façons: - Le premier utilisant l'assert comme dans l'exemple de la page 74 dans le guide de programmation avancée. - La deuxième méthode utilise assert-string. J'ai essayé le seul chemin de chaque façon et aussi les deux façons ensemble. J'utilise le module RUN_TIME. Mon code génère les bonnes constructions (defrules et deftemplates) mais le nouveau fait n'est pas affirmé. Seul le fait initial est là. Je ne sais pas pourquoi!Impossible d'affirmer des faits dans les clips de l'application intégrée
Voici mon code:
#include "clips.h"
int main()
{
void *theEnv, *newFact, *templatePtr;
DATA_OBJECT theValue;
extern void *InitCImage_1();
theEnv = InitCImage_1();
EnvReset(theEnv);
// One way
templatePtr = EnvFindDeftemplate(theEnv, "Navigation");
newFact = EnvCreateFact(theEnv, templatePtr);
if (newFact == NULL) return -1;
theValue.type = SYMBOL;
theValue.value = EnvAddSymbol(theEnv, "Auto");
EnvPutFactSlot(theEnv, newFact, "FlightStatus", &theValue);
EnvAssert(theEnv, newFact);
// The other way
EnvAssertString(theEnv, "(Navigation (FlightStatus Auto))");
EnvRun(theEnv,-1);
EnvListDeftemplates(theEnv, "stdout", NULL);
EnvListDefrules(theEnv, "stdout", NULL);
EnvListDeffacts(theEnv, "stdout", NULL);
}
Qu'est-ce qui ne va pas dans mon code?
Merci beaucoup @Gary. Ça marche maintenant. –