Laison RS 232

didil1981 Messages postés 2 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 9 juin 2005 - 8 juin 2005 à 16:54
jamy02 Messages postés 7 Date d'inscription jeudi 9 juin 2005 Statut Membre Dernière intervention 11 juin 2005 - 9 juin 2005 à 21:44
bonjour!!!
Dans le cadre de mon projet de fin d'année je suis amené à programmer un port serie "avec le protocole RS232 via le COM1" sur DELPHI 5 --> Logiciel et version imposé par le proff, toutefois mes connaisances sont limitées dans ce domaine là et les contraintes de temps ne me permettent pas de passer beaucoup plus de temps sur cette partie du projet qui constitue d'ailleurs que 10% du projet entier, c'est pourquoi j'aurais besoin d'un petit coup de pouce de votre part " codes ou explications détaillées".
je vous remercie d'avance

5 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
8 juin 2005 à 18:52
salut,

dans un premier temps je te conseille d'aller voir le tutoriel de nono40 chez developpez.com concernant Tcomport un composant DELPHI concernant les liaisons RS232

dans un second temps prcise ta question car le sujet est vaste

bonne prog
0
didil1981 Messages postés 2 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 9 juin 2005
9 juin 2005 à 09:05
Avant tout je te remercie pour avoir repondu à ma question.
je vais essayer cette fois-ci d'être un peu plus précis:
au fait j'ai déja essayer d'installer le composant Tcomport mais sans résultat "à mon avis je m'y prends mal", en ce qui concerne le projet voilà un petit résumé du cahier de charge:
On veut faire de l'acquisistion de meures d'un double pendule par l'intermédiaire d'un micro-contrôleur PIC16 en lui envoyant différentes commandes (démarrer, raz, stopper) et en recevant en retour 2 valeurs d'angles qui faudra afficher par la suite sur notre fenêtre de DELPHI, tout ceci via une liaison de type com série PC.
j'espere que j'ai bien exposé le probleme cette fois-ci.
Merci encore une fois!!!
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
9 juin 2005 à 11:11
salut

pour l'installation de Tcomport relie le turtoriel de Nono40 et suit ses instructions et cela ne devrait pas poser de probleme

pour ton appli voici ce que je fait pour un probleme simillaire:

place un composant Tcomport: et un composant Tcombobox;

procedure TTestModule.SpeedButton13Click(Sender: TObject);

begin

if not flagport then // si le port n'est pas initialiser sortir

begin

MessageDlg('Port serie non initailise', mtError , [mbOk], 0);

exit;

end ;

if not Com1.Connected then Com1.Open;//ouvrir le port s'il n'est pas ouvert

.Com1.ClearBuffer(true,true);

Com1.WriteStr('nom_de_la commande');

Timeout.Enabled:= true;//lancer un timer pour ne pas bloquer en cas de non reponse

Timer7.Enabled:=true; //lancer un timer de strutation

end ;

dans le timer de scrutation tu place les routines de lecture du port et les routines de traitement des resultats

procedure TTestModule.Timer7Timer(Sender: TObject);

var value:smallint;// type a definir suivant les valeurs retournées

begin

if not Timeout.Enabled then//sortir s'il le module n'a pas repondu

begin

Timer7.Enabled: =false;exit

end;

if Port_Serie.Com1.InputCount<nombre d'octet a recevoir then exit;//sortir si le nombre n'est pas atteint

Timeout.Enabled:= false;//desactive le timeout

Timer7.Enabled:=false;// fin de reception

Port_Serie.Com1.Read(value,2);//lecture de valeusr binaires

valeur1_a_traiter:=value;

Port_Serie.Com1.Read(value,2);

valeur1_a_traiter:=value;

Port_Serie.Com1.Read(value,2);

valeur1_a_traiter:=value;

Port_Serie.Com1.Read(value,2);

valeur1_a_traiter:=value;

//et ainsi de suite jusqu'au traitement de toutes les valeurs attendues

end ;

procedure TTestModule.TimeoutTimer(Sender: TObject);

begin

timeout.Enabled: =false;// arreter le timeout

MessageDlg('Le module ne repond pas', mtError , [mbOk], 0)

end;

tu regles Timer7.interval:=100; // 100ms pour une scrutation c'est suffisant en dessous de 20ms ça ne sert a rien

tu regles Timeout.interval:=2000; // 2s il faut lui laisser le temps de reagir;



j'espere avoir été assez clair

bonne prog
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
9 juin 2005 à 11:23
c'est encore moi

juste 2 ou 3 petites choses comme j'ai utiliser des copier coller d'une
de mes applis il est est possible qu'il reste quelques traces du genre:

( . )Com1.ClearBuffer(true,true);

ou

valeur1_a_traiter repetees plusieurs fois

pour ce qui est de l'tuilisation d'une boucle de scrutation ceci permet

1) de ne pas bloquer l'application pendant le traitement

2) de ne pas 'planter' en cas de non reponse du genre carte non connectée SI,Si ça arrive j'en sais quelques choses
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jamy02 Messages postés 7 Date d'inscription jeudi 9 juin 2005 Statut Membre Dernière intervention 11 juin 2005
9 juin 2005 à 21:44
Il existe aussi un composant qui fonctionne trés bien qui est APDCOMPORT ou alors il faut se taper les instructions
d'API windows !
0
Rejoignez-nous