Page 1 sur 2
problème avec une DLL
Publié : mar. 13/sept./2005 7:35
par f1roe
Bonjour,
J'ai une DLL qui est récalcitrante sous PB (je l'utilise sous VB6 sans problème)
La fonction suivante fonctionne très bien en PB :
short int GetInsideHumidity_() /* "C" * /
je l'utilise comme ça en PB:
Humidite.w=CallFunction(lib,"GetInsideHumidity_V") ;c'est un "short int"
maintenant une autre fonction mais avec un autre type :
float GetBarometer_V() /* "C" */
Je l'utilise comme ça en PB:
Barometre.f=CallFunction(lib,"GetBarometer_V") ; c'est un float
et la le résultat n'est pas bon.
J'ai testé avec les autres types sans résultat.
Si quelqu'un a une idée !
Merci d'avance
Sébastien
Publié : mar. 13/sept./2005 11:36
par nico
C'est peut être un float double precision sur 8 octets qu'il faut, PB ne le fait pas!
Publié : mar. 13/sept./2005 11:50
par f1roe
Merci pour cette réponse, néanmoins dans la doc j'ai l'info suivante
"foat refers to a 4 byte floating point"
et cela fonctionne sous VB6 comme ça :
Public Declare Function GetBarometer_V Lib "VantagePro.dll" () As Single
...
Dim ValBarometreSgn As Single
ValBarometreSgn = GetBarometer_V()
donc.... ?
Cordialement
Sébastien
Publié : mar. 13/sept./2005 12:37
par Dr. Dri
bah si tu nous dis où trouver la dll, on pourra faire des essais ^^
en charchant sur le net j'ai juste trouvé ca :
http://www.weathermatrix.net/bbs/vantag ... s/350.html
c'est bien un double et pas un single qui est déclaré en VB... peut être que VB (vu que c'est un langage interprêté) est capable de passer ca en Single de facon transparente...
pour la télécharger c'est ici:
http://www.davisnet.com/support/weather ... kdll20.exe
c'est un zip... en le renomant en zip on peut zapper toute la partie automatique
Dri
Publié : mar. 13/sept./2005 12:43
par f1roe
de suite.... elle est ici :
http://www.davisnet.com/support/weather ... vantagedll
Et pour le complément d'info ici :
http://www.davisnet.com/support/weather ... antagecomm
Effectivement avec une déclaration en "Double" dans VB6 ça marche aussi bien (j'ai testé à l'instant)
Merci d'avance
Sébastien[/url]
Publié : mar. 13/sept./2005 12:48
par Dr. Dri
le temps que j'édite tu as répondu ^^
effectivement dans le zip le readme dit bien que c'est un réel...
j'ai cru voir du blabla sur le port COM, cette dll fait appel à du hardware particulier ?
Dri
Publié : mar. 13/sept./2005 12:53
par f1roe
non juste ouverture d'un port COM de manière simple. Une fonction va interroger la console météo et stock les résultats dans une structure. Les autres fonctions vont interroger cette structure ensuite... rien de très méchant
Sébastien
Publié : mar. 13/sept./2005 13:11
par Dr. Dri
si j'ai rien sur mon port COM je peux tout de même tester les fonctions ?
Dri
Publié : mar. 13/sept./2005 13:15
par f1roe
probablement avec une fonction comme celle-ci :
float GetDLLVersion_V();
La réponse est 2
Séb
Publié : mar. 13/sept./2005 14:13
par Dr. Dri
En passant par de l'assembleur en ligne c'est possible
Code : Tout sélectionner
OpenLibrary(0, "VantagePro.dll")
f.f
CallCFunction(0, "GetDllVersion_V")
!FSTP dword [v_f]
Debug f
Faudrait que fred prenne en compte le type de retour pour éviter ce genre de problèmes...
Dri
Publié : mar. 13/sept./2005 15:18
par f1roe
Merci Dri,
J'ai encore un petit problème a la compilation : moi et l'assembleur
FSTP dword [V_F]
error : undefined symbol
Séb
Publié : mar. 13/sept./2005 15:31
par Dr. Dri
Code : Tout sélectionner
OpenLibrary(0, "VantagePro.dll")
ma_variable.f
CallCFunction(0, "GetDllVersion_V")
!FSTP dword [v_ma_variable]
Debug ma_variable
c'est peut être plus clair comme ca ?
(t'en fais pas je suis aussi une quiche en assembleur)
Dri
Publié : mar. 13/sept./2005 16:11
par f1roe
toujours un problème de compilation :
(PB 3.94)
j'ai la fenetre suivante :
Purebasic Assembler error
Purbasic.asm [825]
FSTP dword [v_ma_variable]
error : undefined symbol
Séb
Publié : mar. 13/sept./2005 16:25
par Dr. Dri
ah j'ai pas fait gaffe, il faut activer l'assembleur (chez moi il est tout le temps activé)
Menu Compiler -> Compiler Options
coche Enable Inline ASM Support
Dri
Publié : mar. 13/sept./2005 16:31
par f1roe
j'avais déjà vérifié cette option. Mais rien a faire.
Je ne comprends pas le principe avec l'ASM... vais regarder les docs
Séb