LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Automotive Diagnostic Command Set - Problem when used in DLL

Bonjour Monsieur Williot,

Pouvez vous tester l'appel de la DLL d'une autre manière, c'est à dire à partir d'un autre logiciel (LabVIEW si vous disposez de celui-ci) ou à l'aide d'autres fonctions, mais sans passer par le script LUA ? La R & D me demande de vous faire faire ces manipulations afin d'identifier la source de votre problème.

Ou bien pouvez vous m'envoyer votre DLL et m'indiquer comment l'appeller (valeur des paramètres, et valeur que doit retourner cette fonction).

De plus avez vous testé cette DLL sur un autre PC ?

Je vous remercie de votre patience.

Cordialement,



Message Edité par Maxime MULLER le 07-01-2008 02:09 AM
0 Kudos
Message 11 of 42
(2,834 Views)

Bonojur M Muller,

Tout d'abord, merci de prendre du temps pour essayer de resoudre mon probleme.

J'ai integré directement le chargement de ma DLL au programme principal (code ci dessous )

static HINSTANCE mcudll = NULL;

 

int InitPlugin(void)
{

    if (g_DllName[0] != 0)
  hPluginLib = LoadLibrary(g_DllName);
 else
  hPluginLib = LoadLibrary("plugins\\toolpad.dll");

 mcudll = LoadLibrary("mcu.dll");                                     // <<< CHARGEMENT DE LA DLL

    
    if (hPluginLib != NULL)
    {
  
  GetFunctionTreeFunctionPtr GetFunctionTree;
  GetFunctionTree =   (GetFunctionTreeFunctionPtr) GetProcAddress(hPluginLib, "GetFunctionTree");
  
  Io_Plugin = GetFunctionTree();

  
  Io_Plugin->Initialisation();
  Io_Plugin->SetJudgeCallBack(JudgementCallBack);
  Io_Plugin->SetRazCallBack(RazCallBack);
  Io_Plugin->SetSaveCallBack(SaveCallBack);
  Io_Plugin->SetPen1CallBack(Pen1CallBack);
  Io_Plugin->SetPen2CallBack(Pen2CallBack);
  Io_Plugin->SetPen3CallBack(Pen3CallBack);
  Io_Plugin->SetPen4CallBack(Pen4CallBack);
  
  
  
  return 0;
    }
 
 return -1;
  
 
}

int FreePlugin(void)
{
 
 if (hPluginLib != NULL)
  FreeLibrary(hPluginLib);
 
 if (mcudll != NULL)
  FreeLibrary(mcudll);                            
 
 
 return 0;
}

0 Kudos
Message 12 of 42
(2,830 Views)

Bonojur M Muller,

Tout d'abord, merci de prendre du temps pour essayer de resoudre mon probleme.

J'ai integré directement le chargement de ma DLL au programme principal (code ci dessous )

static HINSTANCE mcudll = NULL;

 

int InitPlugin(void)
{

    if (g_DllName[0] != 0)
  hPluginLib = LoadLibrary(g_DllName);
 else
  hPluginLib = LoadLibrary("plugins\\toolpad.dll");

 mcudll = LoadLibrary("mcu.dll");                                     // <<< CHARGEMENT DE LA DLL

    
    if (hPluginLib != NULL)
    {
  
  GetFunctionTreeFunctionPtr GetFunctionTree;
  GetFunctionTree =   (GetFunctionTreeFunctionPtr) GetProcAddress(hPluginLib, "GetFunctionTree");
  
  Io_Plugin = GetFunctionTree();

  
  Io_Plugin->Initialisation();
  Io_Plugin->SetJudgeCallBack(JudgementCallBack);
  Io_Plugin->SetRazCallBack(RazCallBack);
  Io_Plugin->SetSaveCallBack(SaveCallBack);
  Io_Plugin->SetPen1CallBack(Pen1CallBack);
  Io_Plugin->SetPen2CallBack(Pen2CallBack);
  Io_Plugin->SetPen3CallBack(Pen3CallBack);
  Io_Plugin->SetPen4CallBack(Pen4CallBack);
  
  
  
  return 0;
    }
 
 return -1;
  
 
}

int FreePlugin(void)
{
 
 if (hPluginLib != NULL)
  FreeLibrary(hPluginLib);
 
 if (mcudll != NULL)
  FreeLibrary(mcudll);                             //<<<
 
 
 return 0;
}

0 Kudos
Message 13 of 42
(2,829 Views)

Bonojur M Muller,

Tout d'abord, merci de prendre du temps pour essayer de resoudre mon probleme.

J'ai integré directement le chargement de ma DLL au programme principal (code ci dessous )

static HINSTANCE mcudll = NULL;

 

int InitPlugin(void)
{

    if (g_DllName[0] != 0)
  hPluginLib = LoadLibrary(g_DllName);
 else
  hPluginLib = LoadLibrary("plugins\\toolpad.dll");

 mcudll = LoadLibrary("mcu.dll");                                     // <<< CHARGEMENT DE LA DLL

    
    if (hPluginLib != NULL)
    {
  
  GetFunctionTreeFunctionPtr GetFunctionTree;
  GetFunctionTree =   (GetFunctionTreeFunctionPtr) GetProcAddress(hPluginLib, "GetFunctionTree");
  
  Io_Plugin = GetFunctionTree();

  
  Io_Plugin->Initialisation();
  Io_Plugin->SetJudgeCallBack(JudgementCallBack);
  Io_Plugin->SetRazCallBack(RazCallBack);
  Io_Plugin->SetSaveCallBack(SaveCallBack);
  Io_Plugin->SetPen1CallBack(Pen1CallBack);
  Io_Plugin->SetPen2CallBack(Pen2CallBack);
  Io_Plugin->SetPen3CallBack(Pen3CallBack);
  Io_Plugin->SetPen4CallBack(Pen4CallBack);
  
  
  
  return 0;
    }
 
 return -1;
  
 
}

int FreePlugin(void)
{
 
 if (hPluginLib != NULL)
  FreeLibrary(hPluginLib);
 
 if (mcudll != NULL)
  FreeLibrary(mcudll);                             //<<< DECHARGEMENT
 
 
 return 0;
}

0 Kudos
Message 14 of 42
(2,829 Views)

Bonojur M Muller,

Tout d'abord, merci de prendre du temps pour essayer de resoudre mon probleme.

J'ai integré directement le chargement de ma DLL au programme principal (code ci dessous )

static HINSTANCE mcudll = NULL;

 

int InitPlugin(void)
{

    if (g_DllName[0] != 0)
  hPluginLib = LoadLibrary(g_DllName);
 else
  hPluginLib = LoadLibrary("plugins\\toolpad.dll");

 mcudll = LoadLibrary("mcu.dll");                                     // <<< CHARGEMENT DE LA DLL

    
    if (hPluginLib != NULL)
    {
  
  GetFunctionTreeFunctionPtr GetFunctionTree;
  GetFunctionTree =   (GetFunctionTreeFunctionPtr) GetProcAddress(hPluginLib, "GetFunctionTree");
  
  Io_Plugin = GetFunctionTree();

  
  Io_Plugin->Initialisation();
  Io_Plugin->SetJudgeCallBack(JudgementCallBack);
  Io_Plugin->SetRazCallBack(RazCallBack);
  Io_Plugin->SetSaveCallBack(SaveCallBack);
  Io_Plugin->SetPen1CallBack(Pen1CallBack);
  Io_Plugin->SetPen2CallBack(Pen2CallBack);
  Io_Plugin->SetPen3CallBack(Pen3CallBack);
  Io_Plugin->SetPen4CallBack(Pen4CallBack);
  
  
  
  return 0;
    }
 
 return -1;
  
 
}

int FreePlugin(void)
{
 
 if (hPluginLib != NULL)
  FreeLibrary(hPluginLib);
 
 if (mcudll != NULL)
  FreeLibrary(mcudll);                             //<<< DECHARGEMENT DE LA
 
 
 return 0;
}

0 Kudos
Message 15 of 42
(2,829 Views)

Bonjour,

Merci de votre réponse. Pouvez vous me préciser les résultats obtenus ?

Cordialement,

0 Kudos
Message 16 of 42
(2,823 Views)
Oupps !!
 
Il y a du avoir un pepin avec le forum, je ne sais comment ma reponse s'est trouvée postée 4 fois avant que je ne finisse d'écrire.
 
Donc suite du message precedent :
 
Le resultat est le meme ( blocage de l'application a la fermeture )
 
La dll ne contient pas de fonctions appellables directement, la seule exportée est celle qui permet l'integration dans LUA.
Par contre au lancement, l'IHM s'affiche correctement, les threads se lancent, la connection a l'ECU se fait bien ainsis que la lecture des valeurs dans la memoire du calculateur.
 
Si joint la dll compilé avec MSVC8 ( vous pouvez la recompilée a partir du projet que je vous ai envoyé dans un precedent post ).
 
J'ai d'autre part installé l'ensemble de mon appilication sur un autre PC, et le résultat est le même.
 
Salutations.
 
B.Williot.
 
 
 
0 Kudos
Message 17 of 42
(2,821 Views)

m Muller,

 

En complement de mon dernier post, ci joint un petit projet qui permet de tester le comportement de la dll.

 

Slts.

B.W.

 

0 Kudos
Message 18 of 42
(2,817 Views)
Petite précision, le port CAN utilisé dans la dll est le CAN1 comme declaré ci dessous :
 
 ret = ndOpenDiagnostic ("CAN1", 500000, 0, 0x6b5, 0x695, &DiagRef);
0 Kudos
Message 19 of 42
(2,817 Views)

Bonjour,

Est-ce qu'il est possible pour vous, de réduire le code au maximum afin de bien détecter d'où vient le problème ? Je suis actuellement entrain de faire des tests avec votre DLL, mais la R & D me demande de vous faire réduire votre code.

Bonne journée !

Cordialement,

0 Kudos
Message 20 of 42
(2,771 Views)