|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
Inicio → WINDEV Mobile 2024 → Utilisation d'API windows erreur paramètre invalide. Convertir une énumration C en langage Windev |
Utilisation d'API windows erreur paramètre invalide. Convertir une énumration C en langage Windev |
Iniciado por shenzhu, 16,feb. 2011 18:27 - 1 respuesta |
| |
| | | |
|
| |
Miembro registrado 4 mensajes |
|
Publicado el 16,febrero 2011 - 18:27 |
Bonjour,
après avoir essayé en vain les différents exemples d'utilisation du GPS, je me suis tourné vers l'API windows permettant de le faire.
Mon idée est d'utiliser la fonction GPSGetPosition pour récupérer les coordonnées GPS. Cette fonction prend comme paramètre HANDLE hGPSDevice, GPS_POSITION *pGPSPosition, DWORD dwMaximumAge, DWORD dwFlags
Le handle hGPSDevice pouvant être récupéré a partir d'une autre fonction la GPSOpenDevice. Tout se passe bien avec le GPSOpenDevice, et j'obtiens mon handle.
La structure GPS_Position est définie sur le site de microsoft et j'ai essayé tant bien que mal de la convertir en langage Windev. Et c'est de ce coté que semblent venir les pépins puisque ma tentative d'utiliser la fonction GPSGetPosition me retourne un code d'erreur 87: INVALID PARAMETER.
Voila donc pour commencer les lignes du code dans lequel j'essaie d'obtenir les coordonnées GPS:
gnHGPSDevice=API("gpsapi.dll","GPSOpenDevice",Null,Null,Null,0)
// initialisation de gMaGPSPosition comme demandee dans le mode d'emploi de microsoft
gMaGPSPosition:nSize=Dimension(gMaGPSPosition) gMaGPSPosition:nVersion=1 Resultat est un entier Resultat=API("gpsapi.dll","GPSGetPosition",gnHGPSDevice,Null,100,0)
IF Resultat=1 THEN Info("ERROR_SUCCESS") ELSE Info("Error Code:"+Resultat) END Info("Latitude="+gMaGPSPosition:Latitude+" ; Longitude=" + gMaGPSPosition:rRlLongitude)
La fonction GPSGetPosition est supposée remplir les champs de la structure GPS_POSITION J'obtiens a tous les coups "Error Code 87"
J'ai l'impression d'avoir des erreurs au niveau de ma traduction des enumerations GPS_FIX_QUALITY FixQuality; GPS_FIX_TYPE FixType; GPS_FIX_SELECTION SelectionType;
Voila donc la definition du GPS_Position made in Microsoft:
typedef struct _GPS_POSITION { DWORD dwVersion; DWORD dwSize; DWORD dwValidFields; DWORD dwFlags; SYSTEMTIME stUTCTime; double dblLatitude; double dblLongitude; float flSpeed; float flHeading; double dblMagneticVariation; float flAltitudeWRTSeaLevel; float flAltitudeWRTEllipsoid; GPS_FIX_QUALITY FixQuality; GPS_FIX_TYPE FixType; GPS_FIX_SELECTION SelectionType; float flPositionDilutionOfPrecision; float flHorizontalDilutionOfPrecision; float flVerticalDilutionOfPrecision; DWORD dwSatelliteCount; DWORD rgdwSatellitesUsedPRNs[GPS_MAX_SATELLITES]; DWORD dwSatellitesInView; DWORD rgdwSatellitesInViewPRNs[GPS_MAX_SATELLITES]; DWORD rgdwSatellitesInViewElevation[GPS_MAX_SATELLITES]; DWORD rgdwSatellitesInViewAzimuth[GPS_MAX_SATELLITES]; DWORD rgdwSatellitesInViewSignalToNoiseRatio[GPS_MAX_SATELLITES]; } GPS_POSITION, *PGPS_POSITION;
Voila ma traduction en WLangage:
GPS_POSITION est une structure nVersion est un entier sans signe sur 4 octets nSize est un entier sans signe sur 4 octets nValidFields est un entier sans signe sur 4 octets nFlags est un entier sans signe sur 4 octets dhUTCTIME est une SYSTEMTIME Latitude est un réel sur 8 octets rRlLongitude est un réel sur 8 octets rRlSpeed est un réel sur 4 octets rRlHeading est un réel sur 4 octets rRlMagneticVaraition est un réel sur 8 octets rRlAltitudeWRTSeaLevel est un réel sur 4 octets rRlAltitudeEllipsoid est un réel sur 4 octets nFixQuality est un entier nFixType est un entier nSelectionType est un entier rRlPositionDilutionOfPrecision est un réel sur 4 octets rRlHzDilutionOfPrecision est un réel sur 4 octets rRlVerticalDilutionOfPrecision est un réel sur 4 octets nEnSatelliteCount est un entier sans signe sur 4 octets tabTblenSatelliteUsedPRNs est un tableau fixe de 1 par 16 entiers sans signe sur 4 octets nEnSatelliteInView est un entier sans signe sur 4 octets tabTabenSatelliteInViewPRNs est tableau fixe de 1 par 16 entiers sans signe sur 4 octets tabTblenSatellitesInViewElevation est un tableau fixe de 1 par 16 entier sans signe sur 4 octets tabTblenSatellitesInViewAzimuth est un tableau fixe de 1 par 16 entiers sans signe sur 4 octets tabTableenSatellitesInViewSignalToNoiseRatio est un tableau fixe de 1 par 16 entiers sans signe sur 4 octets FIN
D'après vous, ou se situe le bug de mon programme et comment le corriger ?
Merci
(PS: Je sais par expérience que sur le forum de Windev, il est malheureusement hyper difficile d'obtenir une reponse... Mais je tente quand meme ma chance en esperant qu'un bon samaritain saura m'indiquer la voie) |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1 mensaje |
|
Publicado el 05,mayo 2011 - 02:55 |
Bonjour shenzhu, Je rencontre le même problème que vous en ce qui concerne l'utilisation des fonction GPS pour windows mobile. Pour l'instant la solution serait de choisir un terminal Android, mais je ne trouve aucun terminal durci Android sur le marché actuellement. Vus que vous avez posté votre message depuis un petit moment, avez-vous trouvé une solution depuis? Si oui je vous serai très reconnaissant de la partager si vous le voulez bien.
D'avance merci pour votre réponse |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|