# String in eine Datei schreiben beim CP



## olitheis (20 November 2010)

Hallo,
ich hatte vor einiger Zeit eine Frage zu einem BK9000 und String in eine Datei schreiben.
-Also Datei erzeugen oder öffnen.
-Dann den String in die Datei schreiben (anhängen ans Ende)
-Und Datei wieder schliessen
Am Ende hat auch alles recht gut funktioniert, jedoch jetzt möchte ich das gleiche mit einem CP62... machen aber der String wird nicht mehr geschrieben.
1. Frage kann ich die gleichen FB's aus der gleichen Lib verwenden, bzw. welche FB's aus welcher Lib muss ich verwenden?
(FB_FileOpen, FB_FilePuts, FB_FileClose)
Das Problem ist, dass mir der FB_FileOpen sofort einen bError=True gibt sobald ich versuche meine c:\test.txt zu öffnen.
Bei der NetID muss ich doch bei allen drei Bausteinen die des CP angeben, richtig?
Und die datei, in die geschrieben wird liegt dann auch auf dem CP, oder?
Vielen Dank
Oli


----------



## trinitaucher (21 November 2010)

Läuft auf dem CP ein Windows CE? Dann geht es nicht mit dem Pfad C:\...

Was sagt der Fehlercode?


----------



## olitheis (22 November 2010)

Hallo, ja, auf dem CP läuft Win CE.
Die Fehlercodes:
FB_FileOpen: 1804
FB_FilePuts: 1795
FB_FileClose: 1795
ich habe dazu meine Bausteine mal mit angehängt.
Vielleicht kann man hier erkennen, wo der Fehler liegt.
Kann ich so überhaupt auf dem CP eine Datei anlegen? Oder kann bzw. muss ich 
auf Netzwerk oder USB-Flash speichern?


----------



## trinitaucher (22 November 2010)

Hast du meine Antwort gelesen?


trinitaucher schrieb:


> Läuft auf dem CP ein Windows CE? Dann geht es nicht mit dem Pfad C:\...





olitheis schrieb:


> Hallo, ja, auf dem CP läuft Win CE.
> Die Fehlercodes:
> *FB_FileOpen: 1804*
> FB_FilePuts: 1795
> ...


da steht doch schon alles.


----------



## Cerberus (22 November 2010)

Trinitaucher hat recht.

Wenn du deine Fehlercodes mal nachschauen willst, dann hier.


----------



## olitheis (22 November 2010)

ok, habs auch gerade gesehen .
Welche Möglichkeiten habe ich denn jetzt, meine Datei zu Speichern? Welchen Pfad kann ich denn hier vorgeben?
Danke


----------



## trinitaucher (22 November 2010)

Na anstelle von C:\ wählst du die passende Verzeichnisstruktur deines CE.

Logg dich mal mit CERHOST ein und schau mit dem Explorer die Platte an.
Hab kein CE hier. Ich meine es war irgend was mit \Hard Disk\...


----------



## witkatz (22 November 2010)

Du könntest auch den nackten Dateinamen als sPathName verwenden und für ePath den Wert PATH_BOOTPATH. Dann wird die Datei weitgehend Plattformunabhängig im TwinCAT Boot-Ordner erzeugt. 

Gruß,
witkatz


----------



## trinitaucher (22 November 2010)

Auch ne Möglichkeit!


----------



## olitheis (22 November 2010)

Super, das mit BOOTPATH hat funktioniert.
Ich habe gelesen, dass nur lokal auf dem System Dateien angelegt und geschrieben werden können.
Nun möchte ich aber nicht die CF Karte mit meiner Datei "überfüllen".

Kann ich auch mit einer entsprechenden Pfadangabe auf einen gesteckten USB-Stick speichern?
Danke nocheinmal


----------



## Cerberus (22 November 2010)

Schau doch mal im Explorer unter welchem Pfad dein USB-Stick liegt. Diesen kannst du dann in deinem FB_FileOpen-Baustein verwenden.


----------



## olitheis (22 November 2010)

ja, es ist  (in meinem Fall) 'Hard Disk2\file1.txt' zum Schreiben auf den USB-Stick. Klappt prima.

Eine Frage bzw. Bitte habe ich noch:
Denkst Du, es ist Möglich, ein Macro für Excel zu schreiben, indem ich dann
meinen *.txt File über einen Button einlesen kann.
Also Excel Datei öffnen,
Button betätigen,
die zu importierende datei suchen/auswählen 
oder halt immer aus dem gleichen verzeichnis heraus öffnen,
und dann die 20 Werte, die ich Semikolon getrennt in meiner Datei stehen habe einlesen.
Das müsste dann so aussehen, dass in den Zellen A1-T1 (oberste Zeile) die Bezeichnung für die einzelnen Werte stehen (z.B. Temp1, Temp2, Temp3...) und jeweils darunter die entsprechenden Werte (Zeile für Zeile, so wie ich sie aus TwinCAT in die Datei geschrieben habe).
Das wäre das Non+Ultra :-D.
Zotos hat mir da auch schon einmal bei etwas ähnlichem geholfen.
Nochmals Danke


----------



## Oberchefe (22 November 2010)

Dateiendung "csv" statt "txt", dann mal probieren mit Excel zu öffnen!


----------



## olitheis (22 November 2010)

Das öffnen mit Excel ist eigentlich nicht das Problem. Die txt Datei lässt sich auch so problemlos mit Excel öffnen. Nur müsste ich danach alles händisch umformatieren (Text in Spalten, Variablenbezeichnungen zu den Spalten hinzufügen usw...)
Mir geht es hautpsächlich darum, dass ich die Daten relativ einfach "in Form" bringen kann.
Also nachdem die Daten von TwinCAT aufgezeichnet wurden, möchte ich in Excel ein fertiges Arbeitsblatt öffnen, dass per Knopfdruck die txt Datei einliest und in eine vorgeferetigte Tabelle einträgt.
Das wäre perfekt.


----------



## bits'bytes (22 November 2010)

olitheis schrieb:


> Das öffnen mit Excel ist eigentlich nicht das Problem.



Hallo,
aber es ist die Lösung.

Wenn du wie schon vorgeschlagen, in der ersten Zeile die Spaltenbezeichnungen in die Datei schreibst, in der nächsten Zeile die werte und die Spalten mit einem ';' oder Tab oder ',' trennst, dann hast du was du willst - musst du nur noch xxx.csv benennen, damit Excel das als CSV interpretiert....

bg


----------



## olitheis (22 November 2010)

Prinzipiell ist das richtig, aber zum Einen habe ich nicht die Möglichkeit, die erste Zeile meiner Datei zu beeinflussen, da sie von TwinCAT erzeugt wird. Das möchte ich auch nicht. Und zum Anderen möchte ich das in Excel über ein Makro "automatisieren".

Manuell würde ich es so machen:
1. Excel öffnen
2. Öffnen: Beispiel.txt (Daten sind hier Semikolon getrennt)
3. Textkonvertierungsassi: Daten Getrennt
4. Trennzeichen: Semikolon
5. Fertigstellen

Jetzt sind die Daten nacheinander in der 1. Zeile in Zellen verteilt.

Aber: ich möchte das halt über einen einzigen Button klick realisieren, d.h. Button klicken, Aufforderung zum Öffnen der .txt Datei. Werte einlesen wie oben beschrieben, jedoch erst ab der 2. Zeile, da in der ersten Zeile meine Header stehen.
Kann auch sein, dass ich da jetzt etwas auf dem Schlauch stehe.
Danke euch
Oli


----------



## zotos (24 November 2010)

Bezugnehmend auf Deine PN:

Keine Ahnung ob ich die Aufgabe verstanden habe, aber ich habe mal eines meiner Makros angepasst.

Siehe Anhang


----------



## olitheis (25 November 2010)

Hallo Zotos,
das ist schon sehr gut so.
Könntest Du das evtl. noch etwas für mich erweitern:

1. den Button für Open CSV anders positionieren: so ca. auf A3 damit ich oberhalb noch etwas Platz für Überschriften und Header habe.

2. einen 2. Button anlegen so bei C3, der folgende Funktion hat:
öffnet eine Eingabemaske in der die Spalten Überschriften nacheinander eingegeben werden können
Variable1: in C8
Variable2: in D8
Variable3: in E8
.
.
.
Variable20: in V8

Spalte A sollte generell vorgesehen sein für das Datum
Spalte B sollte generell vorgesehen sein für die Zeit
(die beiden variablen muss ich noch zu meinem String hinzufügen, die fehlen noch)
Denkst Du, das ist machbar?
Vielen Dank
Oli


----------



## olitheis (30 November 2010)

Hallo Zotos,
denkst du, es wäre möglich in deinem Beispiel das Einlesen der CSV Daten bei A8 zu beginnen?
Danke


----------

