... Private MonMessage : String; end; procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); // Gestion de lecture du port Com var mess : string; // Message en capitales pour analyse NouveauMsg : string; // Nouvelles données lues begin // Lecture flux comport comport1.ReadStr(NouveauMsg, Count); MonMessage := MonMessage + NouveauMsg; // Si on détecte une fin de ligne dans la ligne en cours de rédaction if pos(#13#10, MonMessage) <> 0 then begin // Ajout dans le memo d'infos de réception memorecept.Lines.Add(MonMessage); mess := Uppercase(MonMessage); // Recherche des informations à épingler dans le memolog (pas besoin à priori de repasser toutes les // lignes du memorecept...) if (pos(' ALM ', mess) + pos(' ACK ', mess) + pos(' RTN ', mess)) <> 0 then begin // Ajout dans memolog if memoLog.Lines.IndexOf(mess) = - 1 then memoLog.Lines.Add(mess); end; // Réinitialisation suite à fin de ligne MonMessage := ''; end; Application.ProcessMessages; end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionprocedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); // Gestion de lecture du port Com var mess : string; // Message en capitales pour analyse NouveauMsg : string; // Nouvelles données lues msgInt : string; i : integer; begin // Lecture flux comport comport1.ReadStr(NouveauMsg, Count); msgInt := ''; For i := 1 to NouveauMsg do msgInt := msgInt +'/'+ IntToStr(Ord(NouveauMsg[i])); MemoInt.Lines.Text := MemoInt.Lines.Text + msgInt; ...
For i := 1 to length(NouveauMsg) do msgInt := msgInt +'/'+ IntToStr(Ord(NouveauMsg[i]));
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); // Gestion de lecture du port Com var mess : string; // Message en capitales pour analyse NouveauMsg : string; // Nouvelles données lues msgInt : string; i : integer; begin // Lecture flux comport comport1.ReadStr(NouveauMsg, Count); memoRecept.Lines.Text := memoRecept.Lines.Text + NouveauMsg; msgInt := ''; For i := 1 to length(NouveauMsg) do msgInt := msgInt +'/'+ IntToStr(Ord(NouveauMsg[i])); MemoInt.Lines.Text := MemoInt.Lines.Text + msgInt; MonMessage := MonMessage + NouveauMsg; // Si on détecte une fin de ligne dans la ligne en cours de rédaction if pos(#13#10, MonMessage) <> 0 then begin // Ajout dans le memo d'infos de réception memorecept.Lines.Add(MonMessage); mess := Uppercase(MonMessage); // Recherche des informations à épingler dans le memolog (pas besoin à priori de repasser toutes les // lignes du memorecept...) if (pos(' ALM ', mess) + pos(' ACK ', mess) + pos(' RTN ', mess)) <> 0 then begin // Ajout dans memolog if memoLog.Lines.IndexOf(mess) = - 1 then memoLog.Lines.Add(mess); end; // Réinitialisation suite à fin de ligne MonMessage := ''; end; Application.ProcessMessages; end;
var Form1: TForm1; MonMessage : string; ... procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); var TrameCp : string; PosEndTrame : Integer; NouveauMsg : string; begin MonMessage := MonMessage + ComPort1.ReadStr(NouveauMsg, Count); MonMessage := Uppercase(MonMessage); PosEndTrame := Pos(#13#10, MonMessage); if PosEndTrame <> 0 then while PosEndTrame <> 0 do begin TrameCp := Copy(MonMessage, 0, PosEndTrame -1); memorecept.Lines.Add(TrameCp); if (Pos(' ALM ', TrameCp) + Pos(' ACK ', TrameCp) + Pos(' RTN ', TrameCp)) <> 0 then memoLog.Lines.Add(TrameCp); MonMessage := Copy(MonMessage, PosEndTrame +2, Length(MonMessage)); PosEndTrame := Pos(#13#10, MonMessage); end; end;
MonMessage := MonMessage + inttostr (ComPort1.ReadStr(NouveauMsg, Count));
ComPort1.ReadStr(NouveauMsg, Count); MonMessage := MonMessage + NouveauMsg;
var Form1: TForm1; MonMessage : string; ... procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); } var TrameCp : string; PosEndTrame : Integer; begin ComPort1.ReadStr(NouveauMsg, Count); MonMessage := MonMessage + NouveauMsg; MonMessage := Uppercase(MonMessage); PosEndTrame := Pos(#13, MonMessage); if PosEndTrame <> 0 then while PosEndTrame <> 0 do begin TrameCp := Copy(MonMessage, 0, PosEndTrame -1); memorecept.Lines.Add(TrameCp); if (Pos(' ALM ', TrameCp) + Pos(' ACK ', TrameCp) + Pos(' RTN ', TrameCp)) <> 0 then memoLog.Lines.Add(TrameCp); MonMessage := Copy(MonMessage, PosEndTrame +1, Length(MonMessage)); PosEndTrame := Pos(#13, MonMessage); end; end;
// Lecture non-bloquante de la longueur demandée // Attention, la chaine doit rester accessible hors de l'événement... Chaine:=''; Comport1.ReadStrAsync(Chaine,seLongueur.Value,ReadAsyncPtr); Repeat // Ici on n'est pas bloqué, on peut donc traiter les messages Windows Application.ProcessMessages; // Attente de la fin de traitement Until Comport1.IsAsyncCompleted(ReadAsyncPtr);
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); // Gestion de lecture du port Com var mess : string; // Message en capitales pour analyse NouveauMsg : string; // Nouvelles données lues begin // Lecture flux comport comport1.ReadStr(NouveauMsg, Count); MonMessage := MonMessage + NouveauMsg; // Si on détecte une fin de ligne dans la ligne en cours de rédaction if pos(#32#13, MonMessage) <> 0 then begin // Ajout dans le memo d'infos de réception memorecept.Lines.Add(MonMessage); mess := Uppercase(MonMessage); // Recherche des informations à épingler dans le memolog (pas besoin à priori de repasser toutes les // lignes du memorecept...) if (pos(' ALM ', mess) + pos(' ACK ', mess) + pos(' RTN ', mess)) <> 0 then begin // Ajout dans memolog if memoLog.Lines.IndexOf(mess) = - 1 then memoLog.Lines.Add(mess); end; // Réinitialisation suite à fin de ligne MonMessage := ''; end; Application.ProcessMessages; end;
var Form1: TForm1; MonMessage : string; ... procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); } var TrameCp : string; PosEndTrame : Integer; begin ComPort1.ReadStr(NouveauMsg, Count); MonMessage := MonMessage + NouveauMsg; MonMessage := Uppercase(MonMessage); PosEndTrame := Pos(#13, MonMessage); if PosEndTrame <> 0 then while PosEndTrame <> 0 do begin TrameCp := Copy(MonMessage, 0, PosEndTrame -1); memorecept.Lines.Add(TrameCp); if (Pos(' ALM ', TrameCp) + Pos(' ACK ', TrameCp) + Pos(' RTN ', TrameCp)) <> 0 then memoLog.Lines.Add(TrameCp); MonMessage := Copy(MonMessage, PosEndTrame +1, Length(MonMessage)); PosEndTrame := Pos(#13, MonMessage); end; end;