Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Pb avec fonctin readFile qd j'utilise des Threads [ Archives / Au secours ] (jujunio)

jeudi 26 juin 2003 à 09:22:57 | Pb avec fonctin readFile qd j'utilise des Threads

jujunio

Bonjour à tous !

J'tilise la fonction ReadFile pour lire sur le port COm du PC.
La lecture fonctionne correctement sans les Threads.
J'ai décidé de mettre en place les Threads et là ça ne veut plus marcher.
Pas d'erreur à la compil mais qd j'exécute, ça fonctionne jusqu'au ReadFile !!!!!

INT Blick::lireCOM(LPVOID ptr)
{
Blick* pFlag = (Blick*) ptr;
AfxMessageBox ( "Test pFlag....");
pFlag->lecture();
return 0;
}

void Blick::lecture()
{
while(1)
{
AfxMessageBox ( "Test attente trame....");
com1->lire(trame,total,&nbre); // dans un tableau
AfxMessageBox ( "OK une Trame recue...."); traiterTrame();
}
}

La fonction lire utilise ReadFile et c là que ça plante


////////////////////////////////////////////////////////////
void CLiaisonRS232::lire(unsigned char* donnees, int noctets, int* nb)
{
BOOL res;
ULONG nbOctets;

// Lecture reponse
res = ReadFile(
hCOM, // Handle du port
donnees, // Adresse buffer
noctets, // Nb octets à lire
&nbOctets, // Nb octets lus
NULL); // Lecture synchrone

*nb=(int)nbOctets;
}

Merci

jeudi 26 juin 2003 à 09:55:31 | Re : Pb avec fonctin readFile qd j'utilise des Threads

vidarusny

Quand tu utilise les threads sur une seule ressource tu dois synchroniser tes threads. Pour ca en MFC tu as les CSemaphore.Ce qui te permet d'attendre que t'as ressource soit libre, et qui peut eviter le plantagede ta fonction ReadFile.

Pour l'utiliser tu la déclare dans "Blick" (CSemaphore block) et tu l'utilise comme suit :
block.Lock();
com1->lire(trame,total,&nbre); // dans un tableau
block.Unlock();


jeudi 26 juin 2003 à 09:56:20 | Re : Pb avec fonctin readFile qd j'utilise des Threads

vidarusny

Quand tu utilise les threads sur une seule ressource tu dois synchroniser tes threads. Pour ca en MFC tu as les CSemaphore.Ce qui te permet d'attendre que t'as ressource soit libre, et qui peut eviter le plantagede ta fonction ReadFile.

Pour l'utiliser tu la déclare dans "Blick" (CSemaphore block) et tu l'utilise comme suit :
block.Lock();
com1->lire(trame,total,&nbre); // dans un tableau
block.Unlock();


jeudi 26 juin 2003 à 14:00:12 | Re : Pb avec fonctin readFile qd j'utilise des Threads

jujunio

Merci de ton aide VIDARUSNY mais qd je compile, connait pas CSemaphore, ni block, lock et unlock. Je crois qu'il manque une Classe...
peux-tu me détailler comment faire ???

MERCI


-------------------------------
Réponse au message :
-------------------------------

> Quand tu utilise les threads sur une seule ressource tu dois synchroniser tes threads. Pour ca en MFC tu as les CSemaphore.Ce qui te permet d'attendre que t'as ressource soit libre, et qui peut eviter le plantagede ta fonction ReadFile.
>
> Pour l'utiliser tu la déclare dans "Blick" (CSemaphore block) et tu l'utilise comme suit :
> block.Lock();
> com1->lire(trame,total,&nbre); // dans un tableau
> block.Unlock();
>
>



Cette discussion est classé dans : lecture, int, lire, readfile, threads


Répondre à ce message

Sujets en rapport avec ce message

Encore Pb avec ReadFile en utilisant les Threads [ par jujunio ] Bonjour à tous !J'tilise la fonction ReadFile pour lire sur port COM.Ca fonctionne correctement sans les Threads.Avec les Threads ça ne veut plus marc variable partagé [ par enrageur ] bonjourDans mon programme, j'ai deux threads. Dans un thread des threads je met à jour régulierement une variable, et dans l'autre je viens lire cette Lecture d'un fichier de données en C [ par sandy27 ] Alors je vais poser une question qui a déjà été posée dans le forum, mais les réponses ne me conviennent pas ! je veux lire un fichier qui contient de lecture de fichiers binaires [ par psycho ] bonjour a tous. Je cherche a lire un fichier .obj (c a dire un fichier compile, mais l edition des liens n est pas encore faites) pour en extraire ses Lecture d'une chaine sur un port USB [ par Crazy_Joe ] Bonjour à tous,J'aimerais réaliser un petit programme en langage C me permettant de lire une chaîne de caractère émise par un périphérique sur un port lecture des entrées port// [ par salim_samir ] salut à tous je veut lire les états des 8 entrées sur le port // je sais que le port contient seulement 4 entrées et j'aimperai lire 4 par 4.est ce qu lecture d'un fichier texte [ par moberol ] Bonjour à tous,je suis débutant en C++, J'ai un fichier texte à lire, le but étais  de lire lecture ecriture dans un fichier binaire [ par bbear ] j'ai 2 tableaux : un de unsigned int et un de char "string"unsigned int tabint[]={ xxx,xxx,xxx...};char *tabnom[]={ "nom1","nom2","nom3"...};je voudra ReadFile et performance [ par bAzilew ] Bonjour, Je fait des test actuellement sur une machine équipée d'un RAID 0 de 4 disques, qui avec le logiciel hd_speed me donne un taux de lecture de un probléme avec la lecture de fichier [ par sanae19 ] bonsoir en fait voila j'ai un petit probléme de lecture de fichier en fait ma, methode marche tres bien tout seule mai le probléme c'est qu'elle enreg


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,16 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.