Pour Eric LAURENT ... et les autres (CoreTemp & Windev)
2 réponses
Fredo
Salut,
Et non, on ne dort pas :)
J'essaye de communiquer avec CoreTemp pour afficher dans mon appli les
informations sur la température processeur.
Il y a a priori deux façons de faire, la première lire une zone mémoire
partagée et la deuxième faire appel à une dll.
La structure C que l'on doit charger est la suivante :
typedef struct core_temp_shared_data
{
unsigned int uiLoad[256];
unsigned int uiTjMax[128];
unsigned int uiCoreCnt;
unsigned int uiCPUCnt;
float fTemp[256];
float fVID;
float fCPUSpeed;
float fFSBSpeed;
float fMultipier;
char sCPUName[100];
unsigned char ucFahrenheit;
unsigned char ucDeltaToTjMax;
}
je l'ai traduite en WL comme ceci :
Str_CORE_TEMP_SHARED_DATA est une structure
uiLoad est un tableau de 256 entiers système
uiTjMax est un tableau de 128 entiers système
uiCoreCnt est un entier système
uniCPUCnt est un entier système
fTemp est un tableau de 256 réel sur 4 octets
fVid est un réel sur 4 octets
fCpuSpeed est un réel sur 4 octets
fFSBSpeed est un réel sur 4 octets
fMultiplier est un réel sur 4 octets
sCpuName est un tableau de 100 octets
ucFahrenheit est un octet
ucDeltaToTjMax est un octet
FIN
l'appel de la DLL ressemble à cela :
bool WINAPI fnGetCoreTempInfoAlt(CORE_TEMP_SHARED_DATA *pData);
que j'ai traduit par
lRes est un booléen = API("GetCoreTempInfo32.dll",
"fnGetCoreTempInfoAlt",CORE_TEMP_SHARED_DATA)
J'ai essayé de passer par un pointeur et de faire un transfert,
de passer directement &CORE_TEMP_SHARED_DATA ... etc ... je bloque, j'ai
toujours un plantage du WDTEST.EXE
Pour ce qui est de la zone mémoire, pareil, je n'y arrive pas.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Romain PETIT
Après mure réflexion, Fredo a écrit :
Salut,
bonjour,
Si quelqu'un avait une piste.
Essaye : - avec tableaux *fixes" - entiers sur 4 octets (et non système, on ne sait jamais) - chaine ASCIIZ sur 100 pour sCPUName ? ...
A+
-- Romain PETIT contact : rompetit chez free fr +-+ posté sur Usenet avec MesNews et non depuis un forum web +-+ news:fr.comp.developpement.agl.windev http://www.mesnews.net/ http://fr.wikipedia.org/wiki/Newsgroup
Après mure réflexion, Fredo a écrit :
Salut,
bonjour,
Si quelqu'un avait une piste.
Essaye :
- avec tableaux *fixes"
- entiers sur 4 octets (et non système, on ne sait jamais)
- chaine ASCIIZ sur 100 pour sCPUName ?
...
A+
--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Essaye : - avec tableaux *fixes" - entiers sur 4 octets (et non système, on ne sait jamais) - chaine ASCIIZ sur 100 pour sCPUName ? ...
A+
-- Romain PETIT contact : rompetit chez free fr +-+ posté sur Usenet avec MesNews et non depuis un forum web +-+ news:fr.comp.developpement.agl.windev http://www.mesnews.net/ http://fr.wikipedia.org/wiki/Newsgroup
Fredo
Le 30/08/2011 16:11, Romain PETIT a écrit :
Après mure réflexion, Fredo a écrit :
Salut,
bonjour,
Si quelqu'un avait une piste.
Essaye : - avec tableaux *fixes" - entiers sur 4 octets (et non système, on ne sait jamais) - chaine ASCIIZ sur 100 pour sCPUName ? ....
A+
Merci beaucoup, ça fonctionne, du coup, voici le bout de code qui va bien :
Bon dev :)
Fred
Str_CORE_TEMP_SHARED_DATA est une structure uiLoad est un tableau fixe de 256 entiers sur 4 octets uiTjMax est un tableau fixe de 128 entiers sur 4 octets uiCoreCnt est un entier sur 4 octets uniCPUCnt est un entier sur 4 octets fTemp est un tableau fixe de 256 réel sur 4 octets fVid est un réel sur 4 octets fCpuSpeed est un réel sur 4 octets fFSBSpeed est un réel sur 4 octets fMultiplier est un réel sur 4 octets sCpuName est une chaîne ASCIIZ sur 100 ucFahrenheit est un octet ucDeltaToTjMax est un octet FIN
CORE_TEMP_SHARED_DATA est un Str_CORE_TEMP_SHARED_DATA
SI ExeLancé("Core Temp.exe") ALORS SI ChargeDLL("GetCoreTempInfo32.dll")=0 ALORS Erreur(ErreurInfo()) FIN lRes est un booléen = API("GetCoreTempInfo32.dll", "fnGetCoreTempInfoAlt",&CORE_TEMP_SHARED_DATA) // Ouverture de la zone de mémoire partagée POUR i=1 _A_ CORE_TEMP_SHARED_DATA:uniCPUCnt Trace("Core "+i+" => "+CORE_TEMP_SHARED_DATA:fTemp[i]) FIN
FIN
Le 30/08/2011 16:11, Romain PETIT a écrit :
Après mure réflexion, Fredo a écrit :
Salut,
bonjour,
Si quelqu'un avait une piste.
Essaye :
- avec tableaux *fixes"
- entiers sur 4 octets (et non système, on ne sait jamais)
- chaine ASCIIZ sur 100 pour sCPUName ?
....
A+
Merci beaucoup, ça fonctionne, du coup, voici le bout de code qui va bien :
Bon dev :)
Fred
Str_CORE_TEMP_SHARED_DATA est une structure
uiLoad est un tableau fixe de 256 entiers sur 4 octets
uiTjMax est un tableau fixe de 128 entiers sur 4 octets
uiCoreCnt est un entier sur 4 octets
uniCPUCnt est un entier sur 4 octets
fTemp est un tableau fixe de 256 réel sur 4 octets
fVid est un réel sur 4 octets
fCpuSpeed est un réel sur 4 octets
fFSBSpeed est un réel sur 4 octets
fMultiplier est un réel sur 4 octets
sCpuName est une chaîne ASCIIZ sur 100
ucFahrenheit est un octet
ucDeltaToTjMax est un octet
FIN
CORE_TEMP_SHARED_DATA est un Str_CORE_TEMP_SHARED_DATA
SI ExeLancé("Core Temp.exe") ALORS
SI ChargeDLL("GetCoreTempInfo32.dll")=0 ALORS
Erreur(ErreurInfo())
FIN
lRes est un booléen = API("GetCoreTempInfo32.dll",
"fnGetCoreTempInfoAlt",&CORE_TEMP_SHARED_DATA) // Ouverture de la zone
de mémoire partagée
POUR i=1 _A_ CORE_TEMP_SHARED_DATA:uniCPUCnt
Trace("Core "+i+" => "+CORE_TEMP_SHARED_DATA:fTemp[i])
FIN
Essaye : - avec tableaux *fixes" - entiers sur 4 octets (et non système, on ne sait jamais) - chaine ASCIIZ sur 100 pour sCPUName ? ....
A+
Merci beaucoup, ça fonctionne, du coup, voici le bout de code qui va bien :
Bon dev :)
Fred
Str_CORE_TEMP_SHARED_DATA est une structure uiLoad est un tableau fixe de 256 entiers sur 4 octets uiTjMax est un tableau fixe de 128 entiers sur 4 octets uiCoreCnt est un entier sur 4 octets uniCPUCnt est un entier sur 4 octets fTemp est un tableau fixe de 256 réel sur 4 octets fVid est un réel sur 4 octets fCpuSpeed est un réel sur 4 octets fFSBSpeed est un réel sur 4 octets fMultiplier est un réel sur 4 octets sCpuName est une chaîne ASCIIZ sur 100 ucFahrenheit est un octet ucDeltaToTjMax est un octet FIN
CORE_TEMP_SHARED_DATA est un Str_CORE_TEMP_SHARED_DATA
SI ExeLancé("Core Temp.exe") ALORS SI ChargeDLL("GetCoreTempInfo32.dll")=0 ALORS Erreur(ErreurInfo()) FIN lRes est un booléen = API("GetCoreTempInfo32.dll", "fnGetCoreTempInfoAlt",&CORE_TEMP_SHARED_DATA) // Ouverture de la zone de mémoire partagée POUR i=1 _A_ CORE_TEMP_SHARED_DATA:uniCPUCnt Trace("Core "+i+" => "+CORE_TEMP_SHARED_DATA:fTemp[i]) FIN