TP : Daten die bei COM1 ankommen abspeichern statt ausgeben?

  • Hallo, guten Tag.


    Wie kann ich bitte diese Daten, die hier ankommen an COM1 abspeichern in eine Datei.?


    Danke.



    Code
    repeat
       if (Port[ComPort[1] + LSR] and $01) > 0 then begin
         InputLetter := Chr(Port[ComPort[1] + RBR]);
          Write(InputLetter);
       end;
    until OutputLetter = EscapeKey;

    Einmal editiert, zuletzt von funkheld ()

  • funkheld

    Hat den Titel des Themas von „Daten die bei COM1 ankommen abspeichern statt ausdrucken?“ zu „TP : Daten die bei COM1 ankommen abspeichern statt ausgeben?“ geändert.
  • Ja, danke.


    Da kommen die Daten in "Inputletter" an, die ich ausgebe auf dem Screen.

    InputLetter := Chr(Port[ComPort[1] + RBR]);


    Und die sollen jetzt bitte alle in eine Datei bis ich die Com1 verlasse mit EscapeKey;


    Gruss

  • Danke , habe ich geschaut.

    Werde da etwas finden.


    Ich habe das Turbo Pascal-Buch 6 als PDF aber in Englisch.

    Und das ganze mit Dateien in Pascal ist nicht so einfach gestrickt wie

    bei den anderen Sprachen. Gewöhnungsbedürftig.


    Gruss

  • reicht da nicht ein DOS-Befehl?


    copy com1: datei.txt

    type com1: > datei.txt

    echo <com1: > datei.txt


    Das Gerät am Ende der Leitung muss am Ende nur ein STRG+Z schicken, dann ist der Spuk beendet.

  • Du musst eigentlich nur vor der Schleife eine Datei öffnen:

    Pascal
    var OutFile: Text;
    Assign(OutFile, ’c:\temp\empfang.txt’);
    Rewrite(OutFile);

    und dann den Buchstaben statt auf den Bildschirm an diese Datei-Variable schicken

    Pascal
    Write(OutFile, InputLetter);

    am Ende die Datei wieder schließen

    Pascal
    Close(OutFile);

    Edit: Auf Doses Vorschlag hin fehlendes Rewrite() ergänzt

  • Da fehlt nach dem assign noch ein reset(f); (wenn man aus der Datei lesen will) bzw. ein rewrite(f) (für das schreiben).

    Da gab es noch etwas weiteres wenn man bestehende Dateien ändern wollte - ich glaube das ging mit fpos oder seek (funktioniert nicht mit dem Dateityp Text)


    Ebenso kann man Dateien typisieren z.b. var f: file of byte;

    Anders als bei dem Typ Text kann man in typisierten Dateien "Navigieren" mit Fpos, oder seek.


    Für das Lesen von Dateien brauchst du außerdem EOF(f), das solltest du vor jedem Lesevorgang ausführen, z.b.

    Von allen Dingen auf Erden ist die Intelligenz am gerechtesten verteilt: Jeder glaubt, er hätte genug davon.

  • Das kenne ich garnicht.


    Danke.

    Dazu fehlt dann halt noch vorneweg


    mode com1: baud=48 parity=n data=8 stop=1 retry=p


    bzw. bei älteren DOS Versionen


    mode com1:48,n,8,1,p


    Damit hätte man dann 4800 Baud usw. eingestellt. Das p ist wichtig für Geräte, die etwas langsammer reagieren, z.B. Drucker oder andere Geräte, die gelegentlich beschäftigt sind. Sonst würde die Kommunikation in einen Fehler wegen Timeout laufen.


    Und wer seine DOSe mal per seriellem Terminalprogramm von einem anderen PC aus bedienen wiill, gibt auf dem gesteuerten Rechner mal ctty com1: ein... Geht allerdings nicht mit jedem Programm, aber reine DOS-Befehle gehen so.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!