port série win 98

port série win 98 - C++ - Programmation

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

Reply

Marsh Posté le 19-06-2004 à 10:40:32   

Reply

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.


Message édité par printf le 19-06-2004 à 11:22:42

---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 19-06-2004 à 12:04:18    

c'est plutôt RTS et CTS les signaux importants

Reply

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).  

Reply

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 ?


---------------
Un matin je me lèverai et il fera beau.
Reply

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" );
:-)

Reply

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????????????

Reply

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...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

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+
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed