Einzelnen Beitrag anzeigen

skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Serieller Datenempfang Byte-Probleme

  Alt 13. Apr 2023, 08:29
Nein, daran lag es nicht!

Hier der Datenempfang:

Delphi-Quellcode:
procedure TFormMain.OnReceivedData(Data: TArray<Byte>);
begin
  CallInUIThread(
    procedure
    begin
      try
         completebuffer := completebuffer + TEncoding.ANSI.GetString(Data);
      except
        on e: Exception do
          showmessage('Exception: ' + e.Message);
      end
    end);
Das Verarbeiten des Bytearrays (hinzufügen zu completebuffer) machte die Daten kaputt!

Jetzt habe ich die Bytes mal "manuell kopiert":

Delphi-Quellcode:
procedure TFormMain.OnReceivedData(Data: TArray<Byte>);
begin
  CallInUIThread(
    procedure
    var
      empfangen: string;
      i: integer;
    begin
      try
        empfangen := '';
        for i := Low(Data) to High(Data) do
          empfangen := empfangen + chr(Data[i]);
        completebuffer := completebuffer + empfangen;
      except
        on e: Exception do
          showmessage('Exception: ' + e.Message);
      end
    end);
Und damit scheint es zu funktionieren

Ciao
Stefan
  Mit Zitat antworten Zitat