FWrite() <> StrFile() [ERLEDIGT]

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21194
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

FWrite() <> StrFile() [ERLEDIGT]

Beitrag von Manfred »

Moin,

ich hatte bis vor kurzem eine Protokolldatei laufen, die den Datenempfang über eine serielle Schnittstelle Zeichen für Zeichen gespeichert hat, damit ich diese dann über ein Tool wieder in die serielle Schnittstelle schicken kann. Das klappt auch bisher gut. Ich habe es mit FWrite() gelöst. Dann kam ich auf die Idee es mit StrFile() (Tools III) zu machen. Nur, so wie ich es jetzt sehe, scheint letztere Funktion wohl irgendwie nicht den Erfolg zu bringen. Ich meine seitdem fehlt mir irgendwie das Ende des Satzes. Macht StrFile() irgendwas anders, als FWrite() ? Nur bevor ich jetzt irgendwie in die Tiefen eindringe und es liegt dann doch daran.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: FWrite() <> StrFile()

Beitrag von brandelh »

Hallo Manfred,

StrFile() schreibt den kompletten String in eine Datei, dass man so eine Druckdatei an LPTx kopiert,
kenne ich, dass damit aber eine Kommunikation über COM möglich sein soll, denke ich nicht.
Außerdem hast du so auch nicht die Kontrolle ob die Puffer überlaufen.
"Zeichen für Zeichen" scheint mir aber schon übertrieben ;-) andererseits gibt es ja Hardwarepuffer :-)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21194
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: FWrite() <> StrFile()

Beitrag von Manfred »

Was verstehst Du jetzt unter Kommunikation...

Ich "sammel" die Daten in einer Textdatei und schicke sie dann per "Data Com Port Emulator" über Ser1 an Ser2, oder umgekehrt. Und empfange sie dann so, als wenn sie direkt über Ser1/2 gekommen wären.

Soweit hattest Du mich verstanden?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: FWrite() <> StrFile()

Beitrag von AUGE_OHR »

Manfred hat geschrieben:Ich meine seitdem fehlt mir irgendwie das Ende des Satzes. Macht StrFile() irgendwas anders, als FWrite() ?
könnte es Chr(26) (Ctrl+Z) sein ?
schreibe die Daten doch 2x und "vergleiche" ( Windiff ) die beiden Dateien
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21194
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: FWrite() <> StrFile()

Beitrag von Manfred »

Hi Jimmy,

auf die Idee bin ich auch gerade gekommen. Ich schreibe es mal parallel mit den 2 Funktionen weg. Ich warte jetzt nur noch ein Weilchen, bis es genug Daten sind.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: FWrite() <> StrFile()

Beitrag von brandelh »

Hallo Manfred,

ich überlege ...
du hast eine funktionierende Lösung mit fwrite(), das für das Schreiben in
offene Dateien geschrieben wurde und die wohl funktioniert.
Du liest auf einer COM und schreibst das Ergebnis in die andere COM damit
du es dort lesen kannst als ob es direkt da gekommen wäre ... :?
Nun willst du das auf StrFile() umstellen, was nicht funktioniert ... :?: :idea: :?:

Nö Manfred, ich verstehe dich nicht :oops: aber das ist auch nicht wichtig :D

PS: So wie ich die Erläuterung zu StrFile() lese, ist der Befehl gedacht um Text
in eine Datei zu schreiben, eventuell sogar an den Anfang einer existierenden ...
Überschreiben, Abschneiden etc. wie soll da was sinnvolles in die COM Schnittstelle kommen ?

Musst du nicht damit rechnen, dass auf COMin noch Daten ankommen während du StrFile() gerade aufrufst ?
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21194
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: FWrite() <> StrFile()

Beitrag von Manfred »

OK Hubert,

ich merke, wir sind wieder von 2 verschiedenen Welten...... :lol:

Also,
1) ich habe ein Programm, welches Daten über eine serielle Schnittstelle empfängt.
2) das Programm läuft aber dort, wo ich keinen Debugger oder sonstwas zum testen einbinden kann.
3) also schreibe ich die Eingangszeichen direkt in eine Textdatei mit
4) diese Textdatei kopiere ich mir dann auf meinen Rechner.
5) Dann starte ich ein Programm, das die Textdatei einliest und mir in meine serielle Schnittstelle schiebt.
6) jetzt kann ich auf meinem Rechner so tun, als wäre ich vor Ort und würde die Daten direkt erhalten
7) Debugger an und los geht es.

Nix mit Parallelbetrieb usw.

Ich wollte doch nur wissen, ob FWrite() anders schreibt als StrFile(). Warum wird immer alles so kompliziert, wenn ich nur eine kleine Frage stelle? :cry:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2514
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: FWrite() <> StrFile()

Beitrag von ramses »

Hallo Manfred

Der Unterschied FWrite() -> StrFile() besteht darin dass dir StrFile() die Datei auch erstellt, öffnet, Schreibt und Schliesst. Wenn du als 3 Parameter .t. angibst wird an die Datei angesetzt falls diese Besteht anderfalls wird diese neu erstellt. Ich denke in deinem Fall dürfte es wichtig sein den Rückgabeparameter von StrFile() (Bytes Written) zu prüfen und ggf. erneut zu schreiben. Bei schnell aufeinanderfolgenden Aufrufen kommt es öfters vor dass die Datei noch nicht wirklich geschlossen ist und ein erneuter Aufruf geht dann ins leere da StrFile() nicht auf geöffnete Dateien schreiben kann. Vorallem in Netzwerkumgebung sehr wichtig. Mit Zeichen wie Chr(26) usw. hatte ich noch nie Probleme die wurden immer korrekt geschrieben.

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21194
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: FWrite() <> StrFile()

Beitrag von Manfred »

Hi,

hat sich alles erledigt. Die Konfiguration des "Sendeprogrammes" hat sich geändert, oder was weiß ich, was ich da verstellt hatte. das es genau zu dem Zeitpunkt passierte, als ich die Funktion gewechselt hatte.......

Jetzt scheint es wieder zu klappen. :angry2: :angry3: :angry4: :angry5:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: FWrite() <> StrFile()

Beitrag von brandelh »

Manfred hat geschrieben:Ich wollte doch nur wissen, ob FWrite() anders schreibt als StrFile().
Einfache Antwort: Offensichtlich JA :badgrin:

Etwas ausführlicher:

Offensichtlich JA, denn fwrite() schreibt eine Zeichenfolge in einen offenen Kanal :!: :!: :!:
das kann eine Datei sein, aber auch ein COM-Port etc. fwrite() öffnet nicht und schließt nicht.
Es kann in einer Schleife (einem Thread) dauernd Daten empfangen und in einem anderen diese Daten weiterverarbeiten.
fopen, fcreate, fclose regeln das Öffnen bzw. Schließen.

StrFile() - öffnet eine Datei (wie oben bemerkt wurde nur wenn sie noch nicht geöffnet ist :!: ),
schreibt je nach Parameter vorne oder ans Ende die gelieferten Byte,
und schließt die Datei wieder. Was passiert, wenn sich zwei StrFile() Befehle in die Quere kommen ... hab ich nicht probiert.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21194
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: FWrite() <> StrFile() [ERLDIGT]

Beitrag von Manfred »

Sorry Hubert,

offensichtlich NEIN :badgrin: :badgrin:

Wobei natürlich jetzt das Ergebnis gemeint ist. Wenn 2 Sand schüppen, der eine mit einer Schaufel und der andere mit einem Kleinbagger, dann ist der Weg unterschiedlich, aber das Ergebnis dasselbe. :blob8:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: FWrite() <> StrFile() [ERLDIGT]

Beitrag von brandelh »

Hallo Manfred,

eben dachte ich, ich spinne ... ich sehe das
Manfred hat geschrieben:Sorry Hubert,
offensichtlich NEIN :badgrin: :badgrin:
:blob8:
und will antworten mit ZITAT und bekomme das ...
Manfred hat geschrieben:Sorry Hubert,
offensichtlich NEIN :badgrin: :badgrin:
Wobei natürlich jetzt das Ergebnis gemeint ist. Wenn 2 Sand schüppen, der eine mit einer Schaufel und der andere mit einem Kleinbagger, dann ist der Weg unterschiedlich, aber das Ergebnis dasselbe. :blob8:
Nach einem Refresh ist es klar, du hast die Antwort nachgebessert :D

Dennoch, deine Frage war "schreibt ... anders" und da ist meine Erklärung 100% richtig :!:
Ob der Unterschied für deine Aufgabe von Bedeutung ist, das hattest du nicht gefragt :badgrin: :badgrin: :badgrin: deckt sich aber mit deinem Anhang, also gut is :D
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21194
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: FWrite() <> StrFile() [ERLDIGT]

Beitrag von Manfred »

Hubert,

wir stehen kurz vor Weihnachten. Der Jahreswechsel wird langsam eingeläutet.

Ich werde NICHT mit Dir Streiten...... :naka:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: FWrite() <> StrFile() [ERLDIGT]

Beitrag von brandelh »

Manfred hat geschrieben:Ich werde NICHT mit Dir Streiten...... :naka:
ich gebe ja schon nach und verkrieche mich vor dem NAKA (= :naka:) :badgrin:
Gruß
Hubert
Antworten