Utilisation du composant TComPort

Thrifto - 26 sept. 2012 à 13:40
 Thrifto - 1 oct. 2012 à 11:34
Bonjour à tous !
Je code actuelement sur la plateforme DELPHI avec l'aide du composant TComPort ! J'ai suivi le tutorial de nono : http://nono40.developpez.com/tutoriel/delphi/2005/comport/
tout va pour le mieux dans le meilleur des monde, mais j'aimerais lancé la mécanique plus loin.

J'aimerai récupérer par le biais d'un lecteur de code barre (brancher en COM1) des données et renvoyer cette donnée sur deux autres ports COM2/COM3 sous forme de deux application :
- La première affiche la donnée lu et l'envoie au deux port COM2/COM3
- La deuxième affiche seulement la donnée reçu en COM2/COM3 pour bien vérifier la transmission

L'affichage et la réception de la première étapes est faite (ça marche) mais maintenant je suis bloquer sur l'envoie aux deux COM2, COM3
(Je pars du principe que l'affichage de la donnée sur COM2 et COM3 marche de la même façon que sur mon COM1)
J'aimerai donc un peu d'aide quand à la démarche à suivre pour transmettre sur c'est deux COM, ou si vous avez à votre disposition un tutoriel différent de NONO j’appréciai.
Merci à vous

4 réponses

Avec de l'aide j'ai un peu avancé sur mon projet, j'ai donc ajouté quelques lignes à mon travail pour effectuer les différentes étapes.
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
Var Chaine:String;

begin
  ComPort1.ReadStr(Chaine,Count);
  if AfficheCOM1 then Memo1.Lines.Text := Memo1.Lines.Text + 'COM1, reçu : '+Chaine;
  If eCRLF.Checked
    Then ComPort2.WriteStr(Chaine+#13#10)
    Else ComPort2.WriteStr(Chaine);
  If eCRLF.Checked
    Then ComPort3.WriteStr(Chaine+#13#10)
    Else ComPort3.WriteStr(Chaine);
  if AfficheCOM1 then Memo1.Lines.Text := Memo1.Lines.Text + 'COM2, envoyé : '+Chaine;
  if AfficheCOM1 then Memo1.Lines.Text := Memo1.Lines.Text + 'COM3, envoyé : '+Chaine;
  Comport1.ClearBuffer(true,false);
end;

procedure TForm1.ComPort2RxChar(Sender: TObject; Count: Integer);
Var Chaine:String;
begin
  setlength(chaine,count);
  ComPort2.ReadStr(Chaine,Count);
  Memo1.Lines.Text := Memo1.Lines.Text + 'COM2, reçu : '+Chaine;
end;

procedure TForm1.ComPort3RxChar(Sender: TObject; Count: Integer);
Var Chaine:String;
begin
  setlength(chaine,count);
  ComPort3.ReadStr(Chaine,Count);
  Memo1.Lines.Text := Memo1.Lines.Text + 'COM3, reçu : '+Chaine;
end;

procedure TForm1.btnEnvoyerClick(Sender: TObject);
begin
  If eCRLF.Checked
    Then ComPort1.WriteStr(eEnvoi.Text+#13#10)
    Else ComPort1.WriteStr(eEnvoi.Text);
end;

Cela permet les différents traitements que j'ai à faire.
Mais j'ai un problème plus grave ! Je ne rentre en fait dans aucune des ces procédures RXChar et je ne sais vraiment pas d'où viens le problème.
Je connecte mes ports :
procedure TForm1.Button1Click(Sender: TObject);
begin
    comport1.Connected:= true;
    comport2.Connected:= true;
    comport3.Connected:= true;
end;

J'ai ajouté des
ShowMessage();
dans les procédures RXChar pour savoir si j'y passe et non.
Si vous avez une petite idée d'où viens le problème car je pense que mon code est fonctionnel.
0