Changer l'etat logique du DTR [Résolu]

Signaler
Messages postés
77
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
9 mai 2006
-
Messages postés
304
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
10 mars 2012
-
avec inpout32.dll comment je peux passer de l'etat 0 à 1 sur le DTR du port serie puie revenir a l'etat 0 avec le logiciel delphi?


merci

16 réponses

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
36
j'y penser en lisant justement, pas de parentheses a mettre pour :

procedure CLOSECOM(); stdcall; external 'RSCOM.DLL';

procedure CLOSECOM; stdcall; external 'RSCOM.DLL';

c'est pas comme en C++ ou les parentheses sont quasi-obligatoire dans les declarations de fonctions (pas de procedures en C++).

<hr size="2" width="100%">
Messages postés
77
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
9 mai 2006

et comment je peux faire pour garder a l'etat logique 1 durant un moment precis (comment marche le timer)?
Messages postés
3824
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 décembre 2020
37
Salut,
pour le Timer c'est tout simple:
tu mets un Timer sur ta fiche (en mode conception)
Tu lui fixes l'interval désiré (dans l'inspecteur d'objets) en Millisecondes 5 Sec : Interval = 5000
toujours dans l'inspecteur d'objets tu cliques sur l'onglet évènements et tu double cliques à droite de OnTimer ce qui va t'écrire dans ton code un squelette de procédure (voir ci-dessous):

Procedure TForm1.Timer1Timer(Sender : TObject);
Begin
// ici ton code
End;

et tu écris le code que tu désires voir s'exécuter après la temporisation (5 sec par Ex)
Procedure TForm1.Timer1Timer(Sender : TObject);
Begin
Timer1.Enabled : = False; // on Stop le Timer
Button1.Caption := 'Timer Off'; // ici le code qui doit être exécuté
End ;

Démarrage du Timer :
Procedure TForm1.Button1Click(Sender : TObject);
Begin
Timer1.Enabled : = True;
Button1.Caption := 'Timer On'; // pour voir quelque chose
End;

Bon l'exemple n'est pas terrible mais bon ce n'est qu'un exemple

Et pour un Timer qui fonctionnerai de suite au début du programme tu peux mettre la propriété Enabled du Timer à True directement dans l'inspecteur d'objects

@+
Cirec
Messages postés
77
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
9 mai 2006

OK je pense avoir compris pour le timer,en fait je le fais avec le TD et j'ai ecris :

begin
out32($3F8+0,$0);
end

au debut le td envoyé -12volt maintenant le TD m'envoie +12 V en permanence
Comment le faire redscendre a l'etat 0 (-12volt)
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
salut,

je t'ai déjà dis dans un post précédent que inpout32.dll n'est pas
faite pour le port serie la gestion de ce port étant particulère

vas voir:

ICI

c'est un tuto sur le port serie



@+

jlen
Messages postés
77
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
9 mai 2006

salut jlen,
je sais j'ai expliqué a l'ingenieur informaticien ce que tu m'avais dit mais il veut que je le fasse avec inpout32 car meme si au depart ça peut parraitre plus compliquer au final je pourrai faire ce que je veux du port serie. (je ne ve pas le contrarier;...)
Maintenant je vais essayer avec le DSR si j'arrive a le fair varier de l'etat 1 a 0
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
salut,

Excuse moi mais ton ingénieur est un Âne doublé d'un incompétant.
Il as eu son diplome dans une pochette surprise? ou l'a-t-il acheté en
Thaïlande?

Ce n'est vrai que tant que tu restes sur le com1 mais tu n'auras jamais
accès aux ports virtuels de cette façon puisqu'ils n'ont pas d'adresse
physique dans l'espace E/S Qu'il essaye donc de le faire sur un
portable qui n'a pas de com1 (c'est maintenant la quasi généralité) et
il verra ce qu'il se passe. ---> une spendide erreur d'exécution!!!
et un plantage de l'appli!! (dans ce cas on utilise un convertisseur
USB/RS et les E/S sont accessibles soit par Dll soit par driver)

Enfin utliser diretement les registres interdit toute possiblité de portabilité: GENIAL comme genre de programme!!!!



@+

jlen
Messages postés
77
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
9 mai 2006

lol jlen t'enerve pas je suis en train de le faire avec rscom.dll et ça marche presque
j'ai fait un bouton 1 :

procedure TForm1.Button1Click(Sender: TObject);
begin
OpenCom('COM1: baud=4800 parity=N data=8 stop=0');
end;

et le signal du TD descend a -12volt donc c'est parfait
et je créer un deuxieme bouton pour que celui-ci remette la tension de départ +12volt :

procedure TForm1.Button2Click(Sender: TObject);
begin
CloseCOM;
end;


mais hélas il ne veut pas compiler avec ce deuxieme bouton car il me dit qu'il y a une erreur a procedure closecom:


function OPENCOM(OpenString:PChar):Integer; stdcall; external 'RSCOM.DLL';
procedure TXD(d:WORD); stdcall; external 'RSCOM.DLL';
procedure CLOSECOM(); stdcall; external 'RSCOM.DLL';

j'y suis presque grace a toi jlen !!
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
maintenant si tu veux tout savoir sur la manipulation des registres de l'uart vas voir:

http://brassart.iut-amiens.fr/enseignement/fichiers/2006_TP5_Port_serie.pdf EE

Et bon courage!!



@+

jlen
Messages postés
77
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
9 mai 2006

ok c cool, tu ne saurais pas pourquoi il me dit identificateur attendu mais 'j' trouvé pour :

procedure CLOSECOM(); stdcall; external 'RSCOM.DLL';

pourtant j'ai beau regardé je ne vois pas d'ou viens erreur
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
je ne vois pas cheez moi ça compile correctement
Messages postés
77
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
9 mai 2006

ou alors il faudrait que je crée un bouton qui annule le premier et remet ainsi l'etat logique zero (qui revient d'ailleur automatiquement lorsque je ferme delphi)
Messages postés
77
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
9 mai 2006

C bon ça marche, en fait sur delphi 3 il ne faut pas mettre ( ).
Donc j'ai supprimé les parentheses et c bon!!!!!
merci beaucoup jlen
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
je ne connais plus delphi3 et je ne l'ai même plus installé



@+

jlen
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
salut foxi,

en D7 ou D2005 la présence ou non des parenthèses est sans importance
Messages postés
304
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
10 mars 2012

pour changer l'état du DTR c'est très facile

- 1) soit tu créé ta propre routine avec les Api's de windows et tu rajoute

hComm c'est le Handle du Port
pour DTR
EscapeCommFunction(hComm , SETDTR ou CLRDTR); SETà l'état haut(1) CLR état bas(0)
pour RTS
EscapeCommFunction(hComm , SETRTS ou CLRRTS);

- 2) soit en utilisant TComPort ou tout autre composant orienté RS232
ComPort.SetDTR(True or False);
ComPort.SetRTS(True or False);