slt
j'aurais voulu savoir comment faire pour attendre l'arrivée d'une trame sur le port série. Pour le moment j'utilise ReadFile en synchrone mais le prog lis directement sur le port sans attendre l'arrivée d'une trame.
slt
j'aurais voulu savoir comment faire pour attendre l'arrivée d'une trame sur le port série. Pour le moment j'utilise ReadFile en synchrone mais le prog lis directement sur le port sans attendre l'arrivée d'une trame.
Salut,
Fait une recherche sur developpez.com, il y a des tutos qui traitent des ports série. (Si tu utilises Borland C++ Builder, il y a le composant TComPort)
Je ne suis pas sur mais je pense que si tu passes en mode asynchrone, tu devrais resoudre ton problème en testant la broche qui indique si une donnée est présente.
A+
ReadFile va attendre un certain temps en fonctions de comment est réglé le timeout du port série.
http://msdn.microsoft.com/library/en-us/devio/base/setcommtimeouts.asp
COMMTIMEOUTS Timeout;
Timeout.ReadTotalTimeoutConstant=(1000*seconde);
if(!SetCommTimeouts("handle retourner par le create file",&Timeout))
tu met tout ca avant le readfile et c'est parti
j'utilise moi aussi visual C++ 6.0, et votre méthode sur les timeouts ne fonctionne pas.
Voici mon code :
normalement ça devrait marcher, mais mon prog reste bloqué à la façon d'une attente active. J'ai pensé à la valeur de retour, mais si je met
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 COMMTIMEOUTS Timeout; Timeout.ReadTotalTimeoutConstant=(100); if(SetCommTimeouts(hComDevice,&Timeout)) return false; ret= ReadFile(*hComDevice,c,1,&dwBytesReaden,NULL);ça me dit toujours que ça ne réussit pas à initialiser le timeout[/code]
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(!SetCommTimeouts(hComDevice,&Timeout))
Il faut initialiser correctement toute la strcuture COMMTIMEOUTS. Il y a plusieurs timeouts, lis la doc:
http://msdn.microsoft.com/library/en-us/devio/base/commtimeouts_str.asp
bon, maintenant je fais cela
mais j'ai toujours le même problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 COMMTIMEOUTS Timeout; Timeout.ReadIntervalTimeout=100; Timeout.ReadTotalTimeoutMultiplier= 10; Timeout.WriteTotalTimeoutMultiplier = 10; Timeout.ReadTotalTimeoutConstant = 100; Timeout.WriteTotalTimeoutConstant = 100; if(SetCommTimeouts(hComDevice,&Timeout)) return false; ret= ReadFile(*hComDevice,c,1,&dwBytesReaden,NULL);
y aurait-il une fonction pour activer les timeouts, à part SetCommTimeouts, ou pour les autoriser?
merci d'avance
une autre question qui n'a strictement rien à voir, personne ne connaîtrais un moyen d'installer un prog fait avec visual c++ sur un pc qui en est dépourvu, histoire que mon PC arrête de communiquer avec lui même, parce qu'il finira par se sentir seul .
@++
qu'est-ce qu'il lit ? Je comprends pas comment il lit sans trame reçue.Envoyé par Ben8585
Pour installer un exe, si tu l'as compilé en /MT tu peux le copier directement sur l'autre PC.
j'ai essayé le /MT, mais le compilo me dit qu'il faudrait /MDd, or quand je tape /MT, cela supprime /MDd, je ne comprends pas J'ai du mal avec les compilations à rallonge, car jusqu'à maintenant j'ai surtout codé sur des microcontrôleurs.
Merci d'avance pour la réponse
Compile en release.
Dans les options du projet, C/C++->génération de code, choisi /MT (release).
quand tu dit /MT, c'est pour MultiThread? Je suis peut être un boulet mais ça marche pas
Oui, c'est donné en parenthèse
c'est quoi qui marche pas ? Quelle est l'erreur ?Multithread (/MT)
voici le messagemais mon soucis premier reste les timeouts qui ne marche pas et bloque le programme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 c:\program files\microsoft visual studio\vc98\mfc\include\afxver_.h(130) : fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds Error executing cl.exe.
Dans les options générales, faut utiliser les MFC/ATL en static.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager