Pb readfile sous Win2k

VolaiL Messages postés 14 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 25 mai 2005 - 23 juil. 2003 à 12:25
VolaiL Messages postés 14 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 25 mai 2005 - 23 juil. 2003 à 15:42
Voilà, j'ai un programme qui tourne impec sou Win9x, et la, je viens de la passer sous win2k, et ce con me "saute" mon readfile :/ Disons qu'il fais kom s'il ne le voyait pas. Il n'attend pas de réponse du port série :/
Voici la portion de programme qui doit poser problème ( si vous en voulez plus, n'hésitez pas à demander :p )

do
{
ReadFile(hcom,&data,1,&nb,NULL); //on li les caractères recu
reponse[reception]=data; //et on les stocke dans une chaine de caractères
printf("%c",data);
reception++;
}while(data!=03); //juska ce kon ait recu la fin du msg (ETX)

Bon, bah si y en a un qui a la solution ^^

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 juil. 2003 à 12:37
interroge GetLastError()
BruNews, ciao...
0
VolaiL Messages postés 14 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 25 mai 2005
23 juil. 2003 à 14:08
GetLastError renvois (null). Et pour cause, il n'y a pas d'erreur ! Le programme réagit vraiment comme s'il "sautait" la ligne du readfile :/
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 juil. 2003 à 14:25
et bien modifie ton code pour en etre certain, il ne faut pas rester dans le "comme s'il sautait".
Place un valeur de retour sur ReadFile et initialise la avant a 1000 par exemple et affiche la ensuite ainsi tu sauras.
GetLastError doit etre teste la ligne qui suit ReadFile.
BruNews, ciao...
0
VolaiL Messages postés 14 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 25 mai 2005
23 juil. 2003 à 14:43
Bon voila, j'ai suivi tes conseils. Voici le code utilisé au cas ou tu veuille vérifier :p

int status=1000;

do
{
status=ReadFile(hcom,&data,1,&nb,NULL); //on li les caractères recu
printf("%i : %i\n",status,GetLastError);
reponse[reception]=data; //et on les stocke dans une chaine de caractères
reception++;
}while(data!=03);

Les valeur de retour sont 1 pour le readfile, donc, tu avais bien raison, il ne saute pas la ligne ;) Et renvoi 1. Cela signifierait qu'il arrive a établir la connexion sur le port série, mais n'attend pas de lire une valeur dessus et passe a la ligne suivante. La valeur renvoyée par le GetLastError est quand à elle 2011657860 mais bon, ca veut rien dire a mes yeux :p J'ai pas la page de tout les codes d'erreurs non plus ^^

Voilà. En espérant que tu pourra résoudre le problème.
+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
VolaiL Messages postés 14 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 25 mai 2005
23 juil. 2003 à 14:51
Oups, j'ai tapé trop vite :p J'avis mi GetLastError au lieu de GetLastError() ;) Bon, g corrigé la, et ca me donne bien 0 en valeur de retour.
Désolé si je suis long a chaque fois à répondre, mais faut ke je descende un étage et que je traverse tout l'atelier pour efectuer le test, car je ne peux pas tester sur mon PC, et en bas, je ne peux rien installé car je n'ai pas les droits. Brefe, c t ma life, tu t'en fou mais bon ^^

J'attends ta réponse :p
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 juil. 2003 à 15:02
void DisplayLastError(HWND hOwner)
{
LPVOID lpMsgBuf = 0;
DWORD dwErr = GetLastError();
if(dwErr) {
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, dwErr, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
(LPTSTR) &lpMsgBuf, 0, NULL);
if(lpMsgBuf) {
MessageBox(hOwner, (LPCTSTR)lpMsgBuf, "Error", MB_ICONEXCLAMATION );
LocalFree(lpMsgBuf);
}
}
}

voila de quoi afficher le GetLastError en french, adapte pour console. Bien entendu une ligne de code n'est jamais sautee.
BruNews, ciao...
0
VolaiL Messages postés 14 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 25 mai 2005
23 juil. 2003 à 15:42
J'vois pas trop quoi mettre en paramètre de ta fonction :/ Mais bon, g lancé l'envoi du msg entre le moment ou jelance mon application et le moment ou elle va planter pkelle tourne dans le vide, et j'arrive à recevoir le message, mais ca plante juste apres.
:/
( le getlasterror me renvoyant 0 je ne m'en soucie plus trop pour etre honnete )
0
Rejoignez-nous