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 

Geöffnete Binärdatei per FTP übertragen und einlesen



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!

12.11.2010, 20:21 (Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2010 23:58 von Matze.)
Beitrag #1

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Geöffnete Binärdatei per FTP übertragen und einlesen
Hi zusammen,

ich muss jede Millisekunde aus meiner Anwendung heraus holen und bin nun her gegangen und öffne/erstelle beim Programmstart eine Binärdatei und beim Programmende wird sie geschlossen. Zwischendrinnen werden Messwerte u.ä. protokolliert.
Im Idealfall läuft die Anwendung über Monate ununterbrochen, d.h. die Datei ist im Prinzip immer geöffnet. Alles andere dauert viel zu lange.

Beim Schreibvorgang landet die Datei auf der Festplatte (bzw. auf dem Speicher eines RT-Systems, wobei das keine Rolle spielt).
Per FTP möchte ich jederzeit die Datei auslesen können.
Die Datei kann ich auch übertragen, aber beim Auslesen kommt irgendein Fehler mit unerwartetem EOF (End of FIle) oder sowas (auch wenn gerade nicht in die Datei geschrieben wird).

Ist es denn prinzipiell möglich, eine geöffnete Datei auszulesen?
Würde es reichen, wenn ich selbst das EOF anhänge?
Oder kann ich das vorgehen komplett vergessen?

Mit dem Vorgehen bin ich beim Schreiben um Faktor 10 schneller, als wenn ich die Datei öffne, schreibe und anschließend schließe.

Grüße

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.11.2010, 20:39
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.425
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Geöffnete Binärdatei per FTP übertragen und einlesen
Hallo Mecha,

Jein: prinzipiell kann man geöffnete Dateien auch lesen - solange sie nicht exklusiv reserviert sind...
Ob das mit den Eckdaten RT-System und FTP-Zugriff auch noch zutrifft, kann ich aber nicht sagen.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2010, 20:58 (Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2010 20:59 von Matze.)
Beitrag #3

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Geöffnete Binärdatei per FTP übertragen und einlesen
Hallo Gerd,

ich weiß gar nicht, wie man Dateien in LabVIEW exklusiv öffnet, vermutlich über "Dateiberechtigung setzen", doch das VI verwende ich nicht und die Übertragung per FTP funktioniert auch. Ich nutze das VI "Datei öffnen/erstellen" im Modus "write only".
Ich vermute, dass das EOF nur beim Schließen hinzugefügt wird (wäre auch logisch). Daher der Gedanke, die übertragene Datei irgendwie zu öffnen und das EOF anzuhängen. Nur wie kann ich die öffnen ohne EOF. *grübel*

Bei mir ist es so, dass die Datei auf einem System geöffnet ist, dann im geöffneten Zustand per FTP übertragen wird und dann auf einem anderen System ausgelesen wird.
Ich vermute, dass Dateiberechtigungen hier keine Rolle spielen.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2010, 22:59
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Geöffnete Binärdatei per FTP übertragen und einlesen
Geöffnete Datei gleichzeitig lesen, im Prinzip schon möglich. Aber das machst du ja gar nicht. Du überträgst eine geöffnete Datei per FTP. Das hört sich für mich nicht gut an. Davon würde ich die Finger lassen. Oder durch geschickte Programmierung dafür sorgen, dass nicht Schreiben und FTP-Senden/Lesen gleichzeitig passieren.

Alternativ, wieso nicht gleich die Daten aktiv per TCP/IP senden?!

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2010, 23:56 (Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2010 23:58 von Matze.)
Beitrag #5

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Geöffnete Binärdatei per FTP übertragen und einlesen
Hallo Jens,

es sollen die Messwerte protokolliert und nur passiv (bei Bedarf) visualisiert werden. Daher muss das Ganze auch ohne Windows-Applikation laufen. Ein laufendes Streamen ist daher nicht möglich.

Stimmt, wenn während der Übertragung in die Datei geschrieben wird, wäre das nicht gut.
Meinst du, man kann die Übertragung irgendwie so lange verzögern, bis die Daten geschrieben wurden?
Und wie könnte ich das sonst lösen?Sad

In meinem Testfall wurde die Übertragung erst gestartet, nachdem die Daten geschrieben wurden. Und auch hier kam der EOF-Fehler.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.11.2010, 14:43
Beitrag #6

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Geöffnete Binärdatei per FTP übertragen und einlesen
Hallo,

hat noch jemand eine Idee?

Ich habe soeben versucht, das rein unter Windows nachzustellen, doch das ist mir nicht gelungen. Folgendes funktionierte:

- Datei erstellen und hineinschreiben (geöffnet lassen)
- Datei über den Win-Explorer kopieren
- Datei schließen
- Versuch, die Kopie einzulesen

Vielleicht liegt das Problem auch in der FTP-Übertragung (Binärmodus ist eingestellt).Unsure

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.11.2010, 19:28
Beitrag #7

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Geöffnete Binärdatei per FTP übertragen und einlesen
Sowas in der Art mache ich üblicherweise so:

- Datei auf dem RT anlegen und mit "deny access" den Zugriff für alle anderen blockieren.
- Datei benutzen.
- Wenn die Datei übertragen werden soll schickt die Windowsapplikation einen entsprechenden Befehl ans RT.
- RT schließt die Datei und legt sich eine Neue an ggf. auch einfach Kopie der alten.
- RT gibt Windowsapp rückmeldung, daß die Datei erfolgreich geschlossen wurde und abgeholt werden kann.
- Die Windowsapp holt die Datei, löscht sie ggf. auf dem RT und bereitet sie für die Ablage/Anzeige auf.

Die Übertragung selbst kann dann per FTP erfolgen oder per eigener Dateiübertragung, was ich eher bevorzuge (leidvolle Erfahrungen mit dem FTP-Server).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.11.2010, 20:34 (Dieser Beitrag wurde zuletzt bearbeitet: 14.11.2010 20:36 von Matze.)
Beitrag #8

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Geöffnete Binärdatei per FTP übertragen und einlesen
Hallo,

ja das ist an sich eine gute Lösung, nur sollte das ganze System auch ohne Windows-Anwendung funktionieren. Und ich weiß nicht, ob das funktioniert.
Da bräuchte ich vermutlich eine parallele TCP/IP-Schleife in der RT-Anwendung (ich habe bereits eine zur Kommunikation mit einem anderen Gerät) und dort ein kurzes Timeout festlegen, den Timeout-Fehler abfangen und erneut versuchen, die Verbindung aufzubauen.

Starte ich dann die Win-Anwendung, wird ein Listener dort erzeugt, der auf eine eingehende Verbindung wartet.
Beende ich diese, wird der Fehler im RT-System wieder abgefangen und fortlaufend probiert, sich zu verbinden.

Wäre das ein praktikabler Weg?

So eine Lösung hätte für mich einen weiteren, großen Vorteil:
Ich kann Programmparameter von der Win-Anwendung per FTP auf das cRIO laden. Ich bin nur noch nicht auf eine Lösung gekommen, wie ich der RT-Anwendung mitteilen kann, dass eine neue Datei vorhanden ist. Das könnte ich mit deiner Lösung auch erreichen.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.11.2010, 21:47
Beitrag #9

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Geöffnete Binärdatei per FTP übertragen und einlesen
Den Listener würde ich RT Seite machen und dich aktiv darauf connected.
Ich war pauschal davon ausgegangen, daß du eh schon eine TCP Verbindung zwischen Host und RT hast, zum Konfigurieren usw.

Wenn du ganz ohne spezielle Hostapp auskommen willst, kannst du auch einen einfachen Kommandointerpreter auf dem RT laufen lassen und darauf per telnet zugreifen.

Oder du benutzt FTP bzw. das RT-Filesystem als Kommandointerface. Das RT pollt ein definiertes Verzeichniss und der Benutzer legt dort per FTP Dateien die Kommandos darstellen ab. Nach der Abarbeitung löscht das RT dann jeweils die Dateien.

Die Polling Methode würde auch für neue Konfigdateien funktionieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.11.2010, 22:04 (Dieser Beitrag wurde zuletzt bearbeitet: 14.11.2010 22:05 von Matze.)
Beitrag #10

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Geöffnete Binärdatei per FTP übertragen und einlesen
' schrieb:Den Listener würde ich RT Seite machen und dich aktiv darauf connected.
ok, dann eben so herum.Smile

' schrieb:Ich war pauschal davon ausgegangen, daß du eh schon eine TCP Verbindung zwischen Host und RT hast, zum Konfigurieren usw.
Die besteht schon, nur ist die Anforderung, dass die Windows-Applikation nicht laufen muss. Daher erfolgt der Zugriff nur passiv (per FTP).

' schrieb:Wenn du ganz ohne spezielle Hostapp auskommen willst, kannst du auch einen einfachen Kommandointerpreter auf dem RT laufen lassen und darauf per telnet zugreifen.
Hm, damit kenne ich mich gar nicht aus.

' schrieb:Oder du benutzt FTP bzw. das RT-Filesystem als Kommandointerface. Das RT pollt ein definiertes Verzeichniss und der Benutzer legt dort per FTP Dateien die Kommandos darstellen ab. Nach der Abarbeitung löscht das RT dann jeweils die Dateien.

Die Polling Methode würde auch für neue Konfigdateien funktionieren.
Das hatte ich mir auch bereits überlegt. Als ich aber gesehen habe, wie langsam Dateizugriffe sind und wie stark sie die CPU auslasten, möchte ich eine bessere Lösung.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  TDMS automatisch von cRIO auf PC übertragen Rauth 6 7.079 25.09.2014 15:14
Letzter Beitrag: Rauth
  Auslesen aus Binärdatei. Hasenfuss 1 4.963 14.01.2013 19:49
Letzter Beitrag: Lucki
  Binärdatei nach .txt datei Martin Heller 5 8.482 15.12.2011 11:07
Letzter Beitrag: Lucki
  Seltsame Zahlen beim Einlesen einer Binärdatei Peer 3 3.915 28.04.2011 15:43
Letzter Beitrag: Peer
  2D Array als Bilddatei oder Binärdatei speichern rerler 2 8.649 03.08.2010 17:11
Letzter Beitrag: rerler
  Binärdatei einlesen Matze 2 6.130 13.04.2010 11:04
Letzter Beitrag: Matze

Gehe zu: