AGB  ·  Datenschutz  ·  Impressum  







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

1024 Bytes per AsyncPro

Ein Thema von Lee500 · begonnen am 18. Jan 2012 · letzter Beitrag vom 22. Jan 2012
Antwort Antwort
Benutzerbild von Lee500
Lee500

Registriert seit: 18. Sep 2006
39 Beiträge
 
Delphi 2010 Architect
 
#1

1024 Bytes per AsyncPro

  Alt 18. Jan 2012, 19:06
Hallo Forum,

Ich habe mir schon ca. 2 Stunden die Finger wundgesucht, aber noch nichts wirklich passendes gefunden. Ich will mit der AsyncPro Componente 1024 Bytes Daten empfangen, speichern, manipulieren und dann später auch wieder senden. Wenn ich das ganze über den OnTriggerAvail mache, bekomme ich je nach laune des Programms zwischen 150 und 300 Bytes empfangen. Danach ist schluss.

Ich habe auch mal versucht im TriggerAvail nur zu gucken wie viele Bytes im Buffer sind und nach 1024 Bytes den Buffer auszulesen. Funktioniert aber auch nicht wirklich zuverlässig. Danach habe ich dann mal ein wenig mit TriggerStatus und TriggerTimer rumprobiert, um die Pause nach dem Dateneingang zu finden. Der TriggerStatus (stLine, lsBreak) löste manchmal mitten in der Übertragung aus.

Habt ihr vielleicht noch eine Idee, wie ich genau die 1024 Bytes empfangen kann? Allerdings sollte er natürlich auch abbrechen wenn nur 1000 Bytes ankommen und er nix mehr empfängt.

Ich hoffe ihr könnt mir helfen, bin am verzweifeln.

Gruß
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: 1024 Bytes per AsyncPro

  Alt 18. Jan 2012, 20:15
Hallo Lee500,

vom welchem Gerät werden die Bytes den übertrage?

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

Registriert seit: 18. Sep 2006
39 Beiträge
 
Delphi 2010 Architect
 
#3

AW: 1024 Bytes per AsyncPro

  Alt 18. Jan 2012, 21:01
Hallo Chemiker,

Die Daten kommen von der MC-22. Einer Steuerung aus dem Modellbaubereich. Auf die Daten kann ich also keinen Einfluss nehmen und muss Sie so auslesen, wie sie kommen. Allerdings weiß ich nicht so recht, was diese Information jetzt bringt

Gruß
Michael
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: 1024 Bytes per AsyncPro

  Alt 18. Jan 2012, 22:36
AsyncPro ist für serielle Kommunikation? Stimmen Baudrate, Daten/Stopbits usw.? Wie sieht das Protokoll aus? Dir ist klar, das die Daten nicht en block kommen, sondern happenweise und du warten musst, bis alles da ist?
  Mit Zitat antworten Zitat
Alien_F

Registriert seit: 31. Jan 2008
21 Beiträge
 
Delphi 2006 Professional
 
#5

AW: 1024 Bytes per AsyncPro

  Alt 19. Jan 2012, 08:31
Wie wäre es, stattdessen mit der AsyncPro TApdDataPacket Komponente zu arbeiten? Dort kann man Datenpakte definieren ( z.b. Länge= 1024 ). Dort gibt es auch ein TimeOut Event, falls nach einer bestimmten Zeit wirklich mal nichts ankommt.
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: 1024 Bytes per AsyncPro

  Alt 19. Jan 2012, 20:47
Hallo,

@Alien_F: Das TApdDataPacket ist nicht auf Delphi 2010 umgestellt. Das bedeutet, dass man es selber anpassen muss.

Das Problem sollte auch nicht die Byte-Anzahl sein sondern es muss ja irgendwie ein Protokoll vorhanden sein, wie soll sonst festgestellt werden, wann die Daten komplett übertragen worden sind und das Programm nicht während der Übertragung erst die Daten von der Schnittstelle bekommt.

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

Registriert seit: 18. Sep 2006
39 Beiträge
 
Delphi 2010 Architect
 
#7

AW: 1024 Bytes per AsyncPro

  Alt 22. Jan 2012, 15:54
AsyncPro ist für serielle Kommunikation? Stimmen Baudrate, Daten/Stopbits usw.? Wie sieht das Protokoll aus? Dir ist klar, das die Daten nicht en block kommen, sondern happenweise und du warten musst, bis alles da ist?
Ja, ich habe die ComPort Komponente von AsyncPro genommen. Die Baudrate, Datenbits, Stopbits etc. stimmen, da ich mit dem Hyperterminal alles Problemlos empfangen kann. Das die Daten nicht im Block kommen ist mir klar. Ich habe es mal so versucht, das ich beim OnTriggerAvail, also immer wenn Daten da sind, diese in einen Buffer kopiert habe und dann gewartet habe bis die 1024 Bytes da sind. Das hat aber wie schon gesagt nicht funktioniert, da er bei 150-300 Bytes seinen Dienst quittiert hat.

Hallo,

@Alien_F: Das TApdDataPacket ist nicht auf Delphi 2010 umgestellt. Das bedeutet, dass man es selber anpassen muss.

Das Problem sollte auch nicht die Byte-Anzahl sein sondern es muss ja irgendwie ein Protokoll vorhanden sein, wie soll sonst festgestellt werden, wann die Daten komplett übertragen worden sind und das Programm nicht während der Übertragung erst die Daten von der Schnittstelle bekommt.

Bis bald Chemiker
Richtig, die TApdDataPacket Komponente habe ich nicht, da es diese nicht für Delphi 2010 gibt.

Das Protokoll in dem Sinne ist eigentlich nur das die Steuerung immer exakt 1024 Bytes sendet. Das letzte Byte ist ein Paritätsbyte.

Mein Problem liegt aber weniger darin, dass das Protokoll oder irgendwelche Einstellungen der seriellen Schnittstelle nicht passen, sondern eher darin, dass die ComPort Komponente nach 150-300 Bytes einfach den Dienst niederlegt.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#8

AW: 1024 Bytes per AsyncPro

  Alt 22. Jan 2012, 17:00
Schon verstanden, merkwürdig das Ganze. Vielleicht steckt die Tücke im Detail Code. Zeig doch mal das OnTriggerAvail. Wird die Komponente vielleicht deaktiviert?
  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:32 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