AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi TApdComPort Empfangsprobleme
Thema durchsuchen
Ansicht
Themen-Optionen

TApdComPort Empfangsprobleme

Ein Thema von Blamaster · begonnen am 22. Mär 2011 · letzter Beitrag vom 22. Mär 2011
Antwort Antwort
Blamaster

Registriert seit: 20. Jul 2007
230 Beiträge
 
#1

TApdComPort Empfangsprobleme

  Alt 22. Mär 2011, 16:12
Hi,

ich habe aktuell ein paar Schwierigkeiten Daten mit der TApdComPort Komponente korrekt zu empfangen. Die Objekteigenschaften habe ich zum Großteil (bis auf Kleinigkeiten wie Port, Baud, usw) auf default gelassen.

Die Hardware sendet nun folgendes:
Ein Startbyte als Char und darauf folgendend ein Kommando ebenfalls als Char. Anschließend folgt dann eine Liste, bei der jede Zeile als String gesendet wird. Die Stringliste wird mit linefeeds gesendet.

Nun möchte ich die gesendete Liste in Delphi in eine TStringlist befördern.

Der aktuelle Code den ich mir zusammengebastelt habe sieht so aus:

Code:
procedure TForm1.ComPortTriggerAvail(CP: TObject; Count: Word);
var
  I: Word;
  C: Char;
  S: string;
begin
  S := '';

  for i := 1 to Count do
  begin
    c := ComPort.GetChar;

    case Ord(C) of
      255: test.Clear;
      201: ShowMessage('Liste erfolgreich übertragen');
      202: ShowMessage('Übertragung fehlgeschlagen !');
      203: test.Clear;
    else
      case C of
        #10: ;
        #13:
          begin
            test.Add(trim(s));
            s := '';
          end;
      else
        s := s + c;
      end;
    end;
  end;

  if test.Count = 16 then
    ShowMessage(test.Text);
end;
Eigentlich funktioniert der Code im großen und ganzen auch. Allerdings werden ab und zu zeichen verschluckt und kommen nicht korrekt an so kann aus einem "2500" schonmal ein "500" werden.

Nutze ich zur Kommunikation z.B. Hterm wird alles korrekt angezeigt.
Wo kann das Problem liegen ?

Grüße
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: TApdComPort Empfangsprobleme

  Alt 22. Mär 2011, 17:35
Die Variable S ist in deinem Code Lokal.
Dieser String muss aber eine Variable des Formulars sein, da ja das Event TriggerAvail öfters aufgerufen werden kann.
Die Daten werden auf der seriellen Schnittstelle quasi zeitlich zerstückelt.
Beispiel - der Sender schickt "abcdefghijklmnopqrstuvwxyz".
Der Empfänger bekommt mehrere Events:
1. "abcdefgh"
2. "ij"
3. "k"
4. "lmnopqrstuvwxyz"

Wie man sieht hat der Empfänger alle Daten bekommen, aber wahrscheinlich nicht so, wie du dir das vorgestellt hast.

Weiterer Lesestoff (englisch): Message Framing
Dort wird über TCP/IP gesprochen, aber alles trifft genauso auf RS232 zu.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TApdComPort Empfangsprobleme

  Alt 22. Mär 2011, 18:43
Hallo Blasmaster,

welche Delphi-Version benutzt Du?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Blamaster

Registriert seit: 20. Jul 2007
230 Beiträge
 
#4

AW: TApdComPort Empfangsprobleme

  Alt 22. Mär 2011, 21:20
@shmia

Danke das hat weitergeholfen

@Chemiker

Delphi 7
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz