INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dateiempfang unbekannter Größe über TCP



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

02.02.2021, 15:07
Beitrag #1

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 218
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
Dateiempfang unbekannter Größe über TCP
Servus zusammen,

ich verzweifel hier gerade.. Ich bin dabei eine Software von ILA per Remote zu steuern, es handelt sich dabei um ein Laser-Doppler-Velocimeter.
Soweit bekomme ich das Meiste hin, auch wenn die Doku dazu recht sparsam ist, kann ich aktuell per try and error immer mal wieder testen und direkt vergleichen/korrigieren.

Problem habe ich bei der "Binary Data Transfer" von Messdaten, da werden ganze Dateien übertragen, unbekannter Größe (aktuell ist die Datei ca. 33 KB groß).
Anbei mal ein Zusammenschnitt, wie diese Datei aufgebaut ist, wobei '...' mehr Daten sind.
Code:
TransferedFileName;0;C:\LDA_DATA\ProjectA\ProjectA_a.ldv<CRLF>
1 0.000 0.000 0.000 6.602446e+00 5.841750e-01 6.603106e+04 22696 9.999000e+01 1.320417e+03 5.537910e+01 1.320549e+07 22696 9.999000e+01 07/23/20 13:53:35 07/23/20 13:53:55
...
276 0.000 0.000 0.000 0.000000e+00 0.000000e+00 0.000000e+00 0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 0.000000e+00 02/02/21 07:41:07 02/02/21 07:41:17
FinishSendFile<CRLF>
TransferedFileName;0;C:/LDA_DATA/ProjectA/ProjectA_a.csv<CRLF>
Nr.;X[mm];Y[mm];Z[mm];Vx[m/s];Tux[%];fDx[Hz];NrBurstsx;Fringe_dx[um];Vy[m/s];Tuy[%];fDy[Hz];NrBurstsy;Fringe_dy[um];Start;End;Vz[m/s];Tuz[%];fDz[Hz];NrBurstsz;Fringe_dz[um];Va[m/s];Tua[%];fDa[Hz];NrBurstsa;Fringe_da[um]
1;0.000;0.000;0.000;6.602446e+00;5.841750e-01;6.603106e+04;22696;9.999000e+01;1.320417e+03;5.537910e+01;1.320549e+07;22696;9.999000e+01;07/23/20 13:53:35;07/23/20 13:53:55
...
276;0.000;0.000;0.000;0.000000e+00;0.000000e+00;0.000000e+00;0;0.000000e+00;0.000000e+00;0.000000e+00;0.000000e+00;0;0.000000e+00;02/02/21 07:41:07;02/02/21 07:41:17
FinishSendFile<CRLF>
<CRLF> das sind die einzigen Zeilen mit \r\n als Abschluss, darauf zu warten, bei unbekannter Dateigröße, sehe ich aber als riskant.
Es sind 2 Dateien, starten mit
"TransferedFileName";0; <Dateipfad> (wobei die 2te Datei / die erste \ Ordner trennt, das habe ich schon abgefangen)
<Daten>
"FinishSendFile"

Meine Versuche waren:
-kleine Häppchen abfragen und Zeilenweise in die Datei schreiben, dabei kam mir aber der time out vom TCP lesen immer weider in den Weg. Entweder hat er alles ausgebremst oder ich habe nicht alles gelesen.
-Größere Häppchen lesen und direkt wegschreiben, da hat er dann teilweise die nächste Datei nicht erkannt (Endmarker abgeschnitten? oder Daten kommen zu langsam rein?)
-(Als Bild anbei) große Datenmengen lesen und wegschreiben. Da hatte ich dann Schwierigkeiten mit den Bedingungen für die nächste Datei, Daten kamen zu langsam rein
und mein Kopf ist nun voll (und ich bitte hier um Hilfe) -.-'

Das ganze ist mit DQMH geschrieben, im Case "Next File" wird geprüft ob "TransferedFileName" anliegt und übergibt dann neue Parameter zu diesem Case, wenn nicht, ist er fertig.
Es gibt noch 2 andere Dateien, die empfangen werden können, die übertragen je nur eine Datei.
Ich würde gerne wenig Zeit mit der Datenübertragung verschwenden, also lange timeouts vermeiden.

Welchen schritt würdet Ihr gehen, gibt es eine (einfache) Möglichkeit zu prüfen ob da noch was am Port kommt?
Ich habe TCP bisher nur für ASCII Befehle benutzt mit CRLF als Modus.

Ich bin wie immer für jeden Tipp dankbar.
Timo


Angehängte Datei(en) Thumbnail(s)
   

Justieren ist dem Gerät sagen was es anzeigen soll, kalibrieren ist die Kontrolle dieser Anzeige. Eichen ist ein längerer Prüfprozess und darf nur das Eichamt!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Dateiempfang unbekannter Größe über TCP - TpunktN - 02.02.2021 15:07

Gehe zu: