Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi wie bei OnTimeout mit AsyncPro daten holen (https://www.delphipraxis.net/12138-wie-bei-ontimeout-mit-asyncpro-daten-holen.html)

roadrunner2022 21. Nov 2003 12:05


wie bei OnTimeout mit AsyncPro daten holen
 
hallo leute!

ich habe folgendes problem. ich habe ein rießen projekt laufen, in dem ich die APRO 4 verwende. ich empfange über die serielle schnittstelle datenpakete.

ich kann aber keine end contition setzten, weill: das packet hört zwar mit ETX (03h) auf, es kann aber 03h auch im datenpaket vorkommen. auch die länge weiss ich nicht (bzw. weiss sie schon, sie steht im 2. byte, aber dei länge kann 256 übersteigen und somit stimmt die längenangabe nicht).

jetzt habe ich mich durch die pdf's durchgewühlt und den event OnTimeOut gefunden. dort steht auch drinnen, dass man die bisher gesammelten daten mit GetCollectedString bzw., GetCollectedData bekommt


ABER

GetCollectedData ist eine procedure und erwartet sich data : pointer und size : integer. beides bekomme ich aber nicht bei dem event. diese beiden werte bekomme ich nur, wenn die end contition zutrifft (was sie ja nicht tut). ausserdem weiss ich nicht von welchen typ der rückgabewert ist.

ich habe mir jetzt in den event u.a. eine ausgabe auf mein MEMO fenster geschrieben und einen break point gesetzt, er fällt aber nie in den breakpoint hinein, und somit auch keine ausgabe am memo.

ich habe schon mit verschieden time out werten experimentiert. z.z. steht er auf 15 (was ca. 15 ms entspricht).

warum kriege ich das nciht zum laufen! HILFE bin ich so blöd oder stelle ich mich nur so an.

mfg roadrunner2022

OLLI_T 21. Nov 2003 15:16

Re: wie bei OnTimeout mit AsyncPro daten holen
 
Hallo RR!

Das ist doch kein Problem. Zur Not diese Asyncpro Geschichte aus dem Projekt kicken und die Datenübertragung via WINAPI sauber in nen Thread auslagern.

Wie ist denn dieses GetCollectedData genau deklariert?

Delphi-Quellcode:
(1) GetCollectedData(Data:Pointer; Size:Integer)
oder
Delphi-Quellcode:
(2) GetCollectedData(Data:Pointer; Var Size:Integer)
In Fall 2 bekommst Du also die Anzahl der empfangenen Bytes zurück und bist aus dem gröbsten raus.
In Fall 1 erwartet die Fkt wahrscheinlich die Grösse des Speichers, den Data bereitstellt.

Würde das Teil so aufrufen:

Delphi-Quellcode:
Var
  Data:PChar;
  Size:Integer;
Begin
  Size:=2048;
  Data:=PChar(GlobalAlloc(GPRT,Size));
  Try
    GetCollectedData(Data,Size);
    // Jetzt munter auswerten, was in Data steht
    ...
  Finally
    GloablFree(DWord(Data));
  End;
End;
Viel Erfolg + schönes WE

OLLI

roadrunner2022 25. Nov 2003 15:51

Re: wie bei OnTimeout mit AsyncPro daten holen
 
dankeschön jetzt hab ichs gecheckt hoffe ich.

ich habe zwar jetzt den time out event zum laufen gebracht, aber

-) er verschluckt mir immer das erste zeichen (wenn er auf ein zeichen triggert, nämlich genau das triggerzeichen, obwohl die include funktion gesetzt ist)

-)wenn ich ihm sage, dass er bei jedem zeichen triggern soll, habe ich das problem, dass der event nach ablaufen des countersfeuert, auch wenn keine zeichen übertragen worden sind. dabei steht dann der data pointer auf $FFFFFFFF -> absturz

-) wenn ich den event zum compilieren deaktiviere, und erst nach dem senden meines befehls aktiviere (weill ich ja eine antwort erwarte), funktioniert es auch nicht. es werden die zeichen im terminal angezeigt aber wenn der evet auftritt steht der data pointer auf $2 -> absturz.

also bitte leuchte ich checke es nicht. was mache den falsch.

ich bin schon am überlegen ob ich nicht das TComPort benutze, aber da schreibt er immer dass er die dsgintf. irgendwas datei nicht finden kann (sie ist ja auch nicht im source.zip.

bin ich so blöd?

recht herzlichen dank für die hilfe. mfg roadrunner2022


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz