Bonjour � tous,

Je d�veloppe un petit programme en VB6 bas� sur un code en C++ qui va lire une valeur dans un p�riph�rique connect� par USB.

Au niveau de la connexion avec le p�riph�rique pas de soucis tout roule comme on dit ... Mais par contre je rencontre quelques soucis pour lire une valeur.

Ce que je dois faire pour lire une valeur c'est appeler la fonction "TP_PM249_GetCounter" qui se trouve dans une DLL (que je poss�de). Pour faire cela, en code C++ voici comment faire :

D�finition :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
TP_PM249_API bool __stdcall TP_PM249_GetCounter(long DeviceNo, long* Count, long* Status);
Code (positionn� sur un TIMER du formulaire) :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
long lCounter = 0;
long lStatus  = 0;
 
if (!TP_PM249_GetCounter(m_iAxe + 1, &lCounter, &lStatus))
{
   m_gCounter.m_iStat = DINIT;			
}
 
m_gCounter.m_dNum = RATIO * lCounter;
Et moi ce que je cherche � faire, c'est la m�me chose mais ... en VB6 ... et comme vous pouvez le voir dans le code C++ il faut faire appelle � des adresse m�moire de variable (&lCounter, &lStatus). Voici comment j'ai proc�d� :

1) D�claration dans un module des fonctions suivantes :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
Public Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
 
Public Declare Function TP_PM249_GetCounter Lib "TP_PM249.dll" (ByVal dwDevice As Long, ByRef Count As Long, ByRef Status As Long) As Boolean
2) Code (positionn� sur un TIMER du formulaire) :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
Dim ptr_LCounter As Long        ' pointer value
Dim ptr_LStatus As Long         ' pointer value
Dim lcounter As String
Dim lStatus As String
 
lcounter = 0
lStatus = 0
 
ptr_LCounter = lstrcpy(lcounter, lcounter)
ptr_LStatus = lstrcpy(lStatus, lStatus)
 
SI_STATUS = TP_PM249_GetCounter(DevNum - 1, ptr_LCounter, ptr_LStatus)
Lors de l'ex�cution du code en VB6, voici le contenu de :
ptr_LCounter ---> 1895948
ptr_LStatus ---> 2079476

(si j'ex�cute une seconde fois le code, les valeurs changent. Voici les valeurs que j'ai :
ptr_LCounter ---> 2079476
ptr_LStatus ---> 1595700)

Or, lorsque j'ex�cute le code en C++, voici le contenu de :
&lCounter --->0x0012f150
&lStatus ---> 0x0012f14C

(si j'ex�cute le code plusieurs fois, les valeurs ne changent pas).

Le but de tout �a c'est de pouvoir avoir en VB6 ce que je trouve en C++ c'est � dire les valeurs des adresses des variables ... afin que je puisse les passer en param�tre � la fonction : TP_PM249_GetCounter

Est-ce que vous pourriez m'aider un peu pour r�soudre ce probl�me ? Je vous remercie d'avance pour le temps que vous allez consacrer � ce probl�me ...