TLazSerial
TLazSerial copied to clipboard
modification parse messages
bonjour ,
si le message recu contient plusieur message+chr(10) la procedure de base ne fonctionne plus correctement (chaque interruption traite un seul message si le buffer en contient plus on les perds...) j'ai modifié la procedure pour parser les messages ainsi:
`procedure TFMain.LazSerial1RxData(Sender: TObject); var str, un_msg: String; begin // Str := LazSerial1.ReadData; CurPos := Pos( Char(10) ,Str); if CurPos = 0 then begin FTempStr := FTempStr + Str; end else begin
FTempStr := FTempStr + Str;
//Memo.Lines.BeginUpdate;
//Memo.Lines.Add('le msg:'+FTempStr+'<');
//Memo.Lines.EndUpdate;
repeat
un_msg:= Copy(FTempStr,1, CurPos-1);
AnalyseTrames(un_msg);
Memo.Lines.BeginUpdate;
Memo.Lines.Add('un msg:'+un_msg+'<');
Memo.Lines.EndUpdate;
//
delete(FTempStr,1,CurPos);
CurPos := Pos( Char(10) ,FTempStr);
//
until (CurPos=0) ;
//
//
//Memo.Lines.BeginUpdate;
//Memo.Lines.Add('msg apres:'+FtempStr+'<');
//Memo.Lines.Add('--------------------');
//Memo.Lines.EndUpdate;
end;
end; `