AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TApdDatapacket dynamische Größe

Ein Thema von Jonas Shinaniganz · begonnen am 10. Apr 2014 · letzter Beitrag vom 11. Apr 2014
Antwort Antwort
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#1

TApdDatapacket dynamische Größe

  Alt 10. Apr 2014, 15:14
Hallo Community,

ich nutze das Async Professional TApdComport und die TApdDatapackets , geladen von songbeamer.de und selbst kurz für XE5 angepasst.

Während ich fast alle Aufgaben mit dieser großen Lib erschlagen kann komme ich an einer Sache nicht recht weiter.

Über RS-232 wird mir ein Paket geschickt welches mit einem bestimmten Start-String anfängt, sagen wir mal (Ansi) "ABC". Das 4te Zeichen ist dann ein Bytewert Der Bytewert sagt aus wie viele Blöckte von je 30 Byte direkt danach gesendet werden.

Wenn also ABC antrifft, schlägt mein TApdDatapacket zu. Ich habe ja den StartString gesetzt. Dann lese ich das Byte an der 4ten Stelle aus. Zum Beispiel eine 3. Jetzt weiß ich wie viele Byte ich entprechend lesen muss (ABC3 d.f. 3*30 = 90 Byte). Nun muss ich ja irgendwie dynamisch die Endbedingung für das Paket setzen können, sodass es bei 90 + die ursprünglichen 4 Byte triggert.

Ist soetwas vorgesehen?

Lieben Gruß.
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.995 Beiträge
 
Delphi 12 Athens
 
#2

AW: TApdDatapacket dynamische Größe

  Alt 10. Apr 2014, 17:01
Ohne das jetzt ausprobiert zu haben:

Datapacket1:
Delphi-Quellcode:
Enabled := true;
StartCond := scString;
StartString := 'ABC';
EndCond := ecPacketSize;
PacketSize := <1 oder 4, je nachdem ob StartString mitgezählt wird>
DataPacket2:
Delphi-Quellcode:
Enabled := false;
StartCond := scAnyData;
EndCond := exPacketSize;
PacketSize := 0;
DataPachet1 OnPacket-Event:
Delphi-Quellcode:
DataPacket2.PacketSize := <was auch immer in dem Byte steht>
DataPacket2.Enabled := true;
DataPacket1.Enabled := false;
DataPachet2 OnPacket-Event:
Delphi-Quellcode:
<das Packet verarbeiten>
DataPacket2.Enabled := false;
DataPacket1.Enabled := true;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#3

AW: TApdDatapacket dynamische Größe

  Alt 11. Apr 2014, 14:10
Okay, schade das es dafür in den Datapackages keine Funktion gibt. Aber so klappt es
Ist auf jeden Fall eine tolle Sache, verwende über 20 Stück von den Paketen. Angenehmes Arbeiten!

Ergänzung:

Zitat:
// PacketSize := <1 oder 4, je nachdem ob StartString mitgezählt wird>
StartString wird hier immer mitgezählt, kann man nicht einstellen

Zitat:
EndCond := exPacketSize;
sollte sein:

Zitat:
EndCond := [ecPacketSize];
Das DataPacket1 - Event ist muss nicht das DataPacket1 deaktivieren und deswegen ist auch die aktivierungs-Zeile im zweiten Paket nichtig.

Naja ich wurde jedenfalls auf groteske Art von der Schnittstellen Dokumentation angelogen. Durch dein Vorgehen bin ich jetzt weiter, auch wenn es eigentlich ganz anders Abläuft als beschrieben.

Danke
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.995 Beiträge
 
Delphi 12 Athens
 
#4

AW: TApdDatapacket dynamische Größe

  Alt 11. Apr 2014, 14:42
Ist schon 'ne Weile her, daß ich damit gearbeitet habe.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 19:59 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