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 (positionn� sur un TIMER du formulaire) :
Code : S�lectionner tout - Visualiser dans une fen�tre � part TP_PM249_API bool __stdcall TP_PM249_GetCounter(long DeviceNo, long* Count, long* Status);
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� :
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;
1) D�claration dans un module des fonctions suivantes :
2) Code (positionn� sur un TIMER du formulaire) :
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
Lors de l'ex�cution du code en VB6, voici le contenu de :
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)
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 ...
Partager