Evénement RxChar non accéssible [Résolu]

Signaler
-
Messages postés
257
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
4 août 2020
-
Bonjour,
J'ai actuellement deux applications placé sur deux PC différents, une sur le premier PC qui récupère une donnée à partir d'un lecteur de code barre (COM6) et qui renvoi cette donnée sur deux autres ports (COM4/5) et l'autre application placée sur le second PC qui récupère les données recu sur les deux ports (COM1/2). Les Ports COM4/5(PC1) et COM1/2(PC2) sont relié avec un câble RS232.

J'utilise donc le composant Comport pour gérer mes transferts.

Mon code :
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
  var   chaine : string;
Begin
  //Passe la variable AfficheCOM1 à vrai pour permettre l'affichage
  AfficheCOM :=  True;
  //Lecture du port comport1 pour la reception de donnée
  ComPort1.ReadStr(Chaine,Count);
  //Clear du mémo pour éviter la saturation en donnée
  Memo1.Lines.clear;
  //Affiche la donnée reçu en COM d'entrée
  if AfficheCOM then Memo1.Lines.Text := Memo1.Lines.Text +Comport1.port+', reçu : '+Chaine+#13#10;
  //Envoi/Ecris la donnée sur un COM de sortie
  ComPort2.WriteStr(Chaine+#13#10);
  //Envoi/Ecris la donnée sur un COM de sortie
  ComPort3.WriteStr(Chaine+#13#10);
  //Affiche la donnée reçu en COM de sortie
  if AfficheCOM then Memo1.Lines.Text := Memo1.Lines.Text +Comport2.port+', envoyé : '+Chaine+#13#10;
  //Affiche la donnée reçu en COM de sortie
  if AfficheCOM then Memo1.Lines.Text := Memo1.Lines.Text +Comport3.port+', envoyé : '+Chaine+#13#10;
end;

procedure TForm1.ComPort2RxChar(Sender: TObject; Count: Integer);
  Var Chaine:String;
begin
  //Lis la donnée présente sur le Port comport2
  ComPort2.ReadStr(Chaine,Count);
  //Ecris dans le memo, la donnée présente sur le Port comport2
  Memo1.Lines.Text := Memo1.Lines.Text +Comport2.port+', reçu : '+Chaine;
end;

procedure TForm1.ComPort3RxChar(Sender: TObject; Count: Integer);
  Var Chaine:String;
begin
  //Lis la donnée présente sur le Port comport3
  ComPort3.ReadStr(Chaine,Count);
  //Ecris dans le memo, la donnée présente sur le Port comport3
  Memo1.Lines.Text := Memo1.Lines.Text +Comport3.port+', reçu : '+Chaine;
end;


Mon problème est que j’accède bien a ma procédure TForm1.ComPort1RxChar mais pas aux deux autres ComPortRxChar.
Je réceptionne bien ma donnée sur mon autres PC donc mes comport1/2/3 sont actif et fonctionnels.
Auriez vous une idée d'où viendrait le fait que c'est procédure ne s'active pas ? Ou tous simplement le fait que ce ne serait pas un évènement RXChar mais un OnFlag ou autres, vu que la donnée est envoyée sur un port et renvoyée sur mon second pc.

Merci de votre aide =)

8 réponses

Messages postés
257
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
4 août 2020
9
Salut,
ben que dire...
Si COM4 et COM5 ne reçoivent jamais rien qu'est ce que tu veux qu'ils lisent
En plus tu dis que le PC1 envoi par le biais de trois ports...ben normalement c'est faux,il reçoit sur le COM1 les données du lecteur code barre et envoi des infos sur COM4 et COM5...
@+
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
bonjour,

comment ces procédures sont-elles déclarées ?

cantador
Je pose le composant comport(2), je passe par l'onglet événement et je double clique sur l'espace RXChar => Passe au code avec ça comme base :
procedure TForm1.ComPort3RxChar(Sender: TObject; Count: Integer);
begin
 
end;


Ainsi que dans l'espace "type":
 procedure ComPort2RxChar(Sender: TObject; Count: Integer);
Messages postés
257
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
4 août 2020
9
Salut,
Donc pour faire court
Comport1 PC1 COM6 <=> Lecteur code barre
Comport2 PC1 COM4 <=> Comport2 PC2 COM1
Comport3 PC1 COM5 <=> Comport3 PC2 COM2
? <=> Comport1 PC2 COM ?
Ben doit y avoir un problème soit dans les définitions de COM, etc...
Mais si ça marche dans un sens ça doit marcher dans l'autre, à moins que les paramètres soit modifier dans tes procédures dans une de tes applications...
Style je déconnecte,je reconnecte, je change le numéro de COM etc...
@+
Comport1 PC1 COM6 = Lecteur code barre
---------------------------------------
Comport2 PC1 COM4 <=> Comport1 PC2 COM1
Comport3 PC1 COM5 < => Comport2 PC2 COM2

Le PC2 ne contient que deux ports.
Vu que la donnée se transmet je pense pas qu'il y est un problème de définitions de COM sinon rien ne passerait de l'un(PC1) à l'autre(PC2)
Le reste du code implémenté concerne des boutons don des actions non prise en compte lors de la réception et de l'envoi. Je scan, ça balance les opérations du TForm1.ComPort1RxChar et devrait lancer celle des deux autres ComPortRxChar.
Messages postés
257
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
4 août 2020
9
Ok, donc sur le PC2 tu fais de la réception sur COM1 et COM2 mais qui renvoi du PC2 sur les ports COM4 et COM5 du PC1, parce que sur le PC1 c'est le COM6 qui se charge d'envoyer en passant par COM4 et COM5... mais qui se charge d'envoyer du PC2 vers le PC1 ? ben du moins si j'ai bien compris...
@+
Tu as mal compris, le PC1 se charge de l'envoi par le biais de trois ports et le PC2 de la réception sur deux ports. Je ne retourne rien du PC2 vers le PC1.
Ce que tu es entrain de me dire c'est que vu que je ne renvoie pas du PC2 au PC1 je ne peux pas lire le contenu de mes ports COM4 et COM5 ?
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
Donc pour faire court..


cantador