port série win 98 - C++ - Programmation
Marsh Posté le 19-06-2004 à 11:22:29
Tu veux parler des signaux RTS et DTR, je suppose ? (les signaux CTR et DTS n'existant pas).
Pour manipuler l'état de ces signaux, il existe deux méthodes, selon la façon dont tu accède au port de communication :
- en utilisant des instructions d'entrées/sorties pour lire et écrire dans l'UART (méthode déconseillée, bien que fonctionnant sous Windows 98) : tu peux écrire dans le MCR (Modem Control Register; offset 4). Bit 0 pour DTR et bit 1 pour RTS.
- en passant par un fichier spécial (méthode conseillée) : tu peux utiliser la fonction EscapeCommFunction() de l'API.
Précise la méthode que tu utilise, et je pourrais détailler un peu si tu en a besoin.
Marsh Posté le 19-06-2004 à 13:06:54
Escusez moi c'est bien RTS et DTR.
Merci pour ta réponse printf mais je suis pas trés bon en programmation et je vois pas du tout comment écrire dans le MCR.
Ta deuxième solution me parait la bonne car j'ai récupérer un prog qui utilise cette fonction :
/* on vide les tampons d'émission et de réception, mise à 1 DTR */
PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);
EscapeCommFunction(g_hCOM, SETDTR);
return TRUE;
bon je comprend pas grand chose, mais j'aimerais bien savoir comment utiliser cette fonction car j'ai essayé de mettre SETRTS à la place de SETDTR et ça marche pas.
Je sais que toute ses fonction sont déclaré dans windows.h mais je trouve pas ou c'est déclaré.
Le but de tout ça étant d'utiliser DTR comme une horloge (en envoyant en continu 0101010101) et RTS comme STR( mise a 1 quand on envoi des données).
Marsh Posté le 19-06-2004 à 13:54:19
C'est déclaré dans "Winbase.h", en fait (même si c'est le fichier "Windows.h" qu'il faut inclure; ce dernier incluant le précédent).
La documentation est ici (en Anglais) :
http://msdn.microsoft.com/library/ [...] ctions.asp
Normalement, si tu utilise SETRTS cela devrait fonctionner. Comment as-tu procédé pour vérifier ?
Marsh Posté le 19-06-2004 à 14:13:15
non en fait j'avais esayer avec SETCTS je crois mais je sais plus trop. J'ai vérifier avec C++ builder dans mon entreprise ou je suis en stage (il m'a mis qui connaissait pas SETCTS). Je vais essayer de l'installer chez moi et je vais voir si ça marche.
printf("merci" );
:-)
Marsh Posté le 23-06-2004 à 16:21:18
salut
j'ai finalement opté pour la deuxième solution : utiliser le mcr
j'ai utilisé inportb et outportb :
outportb(0x3F9,0);
outportb(0x3FC,inportb(0x3FC)^1);
mais problème le compilateur met :
[C++Erreur] serie.cpp(46): Call to undefined function 'outportb'.
[C++Erreur] serie.cpp(47): Call to undefined function 'inportb'.
pourtant j'ai mis conio.h qui apparammenent serait la librairie appropriée.
ou est le problème????????????
Marsh Posté le 23-06-2004 à 16:39:05
http://msdn.microsoft.com/library/ [...] _outpd.asp
Ces fonctions ne marchent que sous Win9x...
C'est marrant, le premier liens de google à ce sujet donne ce topic :
http://forum.hardware.fr/hardwaref [...] 0173-1.htm
Comme quoi une petite recherche sur le forum ça fait gagner du temps...
Marsh Posté le 23-06-2004 à 16:48:59
merci helloword
escuse moi pour la recherche mais sur google j'avais mis outport et outp et j'avais pas essayer _outp puisque justement je savait pas exactement quelle était la fonction.
merci encore, je vais essayer
a+
Marsh Posté le 19-06-2004 à 10:40:32
salut,
j'ai trouvée des programmes qui envoi des données sur le port série mais moi j'aimerais aussi envoyer ce que je veux sur les broches CTR et DTS (et non pas que sur TXD), comment faire?
Si quelqu'un a déja fait un prog similaire, merci de me le montrer a moi et au autres..
merci