PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Problème d'appel de DLL Dallas
Problème d'appel de DLL Dallas
Started by ldumoulin, Apr., 24 2006 7:48 PM - 2 replies
Posted on April, 24 2006 - 7:48 PM
Bonjour à tous,

j'ai un petit problème de traduction sur un appel de DLL Dallas dont voici les sources d'origine :

long session_handle;
unsigned char state_buffer[15360];
short result, cnt = 0;
/* session_handle set from a call to TMExtendedStartSession */
...

/* attempt to find the first device on 1-Wire network */
result = TMFirst(session_handle, state_buffer);

/* loop to count all of the devices on the 1-Wire network */
while (result > 0)
{
cnt++;
/* find next device */
result = TMNext(session_handle, state_buffer);
}
/* close the session with a call to TMEndSession */
...

mon problème est que je n'arrive pas a traduire en langage windev la déclaration de la variable State_Buffer, j'ai essayé en passant par une structure, par un buffer mais dans tous les cas la valeur retournée par l'appel de la DLL ne correspond à aucune valeur attendue .

Code WD 10 utilisé
PROCEDURE StartSession()

ch est une chaîne
//State_Buffer est un entier sans signe sur 1 octet = 15360
State_Buffer est un Buffer //sur 15360
SI VersionWindows() = "32" ALORS
Port = 1
Tmsession = API(GDallasDll,"TMExtendedStartSession",Port,gnTypePort,Null)
SI Tmsession = 0 ALORS
Erreur("Problème d'ouverture de port !")
Ferme
SINON
Res = Gauche(API(GDallasDll,"TMNext",Tmsession,State_Buffer),1)

Merci de votre aide
Posted on April, 25 2006 - 10:51 AM
En employant une chaine Asciiz sur 15360?
En passant les paramètres par adresse en préfixant le nom de variable de &?
Posted on April, 25 2006 - 10:51 AM
Ta variable "State_Buffer est un Buffer" est vide
quand tu appelles la fonction de ta dll...

il faudrait faire, je pense, soit

State_Buffer est un Buffer sur 15360
ou
State_Buffer est tableau fixe de 15360 entier sans signe sur 1

bon dev ;)
eric l.

NEDSARL a écrit :
Bonjour à tous,

j'ai un petit problème de traduction sur un appel de DLL Dallas dont voici les sources d'origine :

long session_handle;
unsigned char state_buffer[15360];
short result, cnt = 0;
/* session_handle set from a call to TMExtendedStartSession */
...

/* attempt to find the first device on 1-Wire network */
result = TMFirst(session_handle, state_buffer);

/* loop to count all of the devices on the 1-Wire network */
while (result > 0)
{
cnt++;
/* find next device */
result = TMNext(session_handle, state_buffer);
}
/* close the session with a call to TMEndSession */
...

mon problème est que je n'arrive pas a traduire en langage windev la déclaration de la variable State_Buffer, j'ai essayé en passant par une structure, par un buffer mais dans tous les cas la valeur retournée par l'appel de la DLL ne correspond à aucune valeur attendue .

Code WD 10 utilisé
PROCEDURE StartSession()

ch est une chaîne
//State_Buffer est un entier sans signe sur 1 octet = 15360
State_Buffer est un Buffer //sur 15360
SI VersionWindows() = "32" ALORS
Port = 1
Tmsession = API(GDallasDll,"TMExtendedStartSession",Port,gnTypePort,Null)
SI Tmsession = 0 ALORS
Erreur("Problème d'ouverture de port !")
Ferme
SINON
Res = Gauche(API(GDallasDll,"TMNext",Tmsession,State_Buffer),1)

Merci de votre aide