2017-06-07 4 views

Répondre

0

À l'avenir, il serait utile d'indiquer ce composant que vous utilisez, d'autant plus que TComPort ne vient pas avec Delphi.

La réponse est parce que OnRxChar peut être appelé avant que toutes les données ont été reçues. Votre code doit indiquer:

procedure Tfrm_main.cport_scanningRxChar(Sender: TObject; Count: Integer); 
begin 
    cport_scanning.ReadStr(data, Count); 
    memo3.Text := memo3.Text + data; 
end; 
+1

Imaginez ce qui se passe lorsque vous numérisez le code suivant (en supposant que l'appareil connecté est un scanner de codes à barres). Vous devez former le code jusqu'à ce qu'une séquence de terminaison soit reçue à la place. Certains composants de port COM sont capables de prédéfinir ceci et de faire le reste pour vous (et de déclencher un événement lorsque les données complètes sont reçues). – Victoria

+0

Après un coup d'oeil rapide sur [cette bibliothèque] (https://sourceforge.net/projects/comport/) je dirais que c'est le 'TComDataPacket' qui implémente une telle chose. – Victoria

+0

Oui, je m'attendais à ce qu'ils aient soit une séquence de fin, soit un autre indicateur –