Zeilenumbruch mit CWRITE

  • Hallo liebe Gemeinde,



    ich habe folgende Probleme:


    1.
    Ich möchte bestimmte Zähler in eine TextDatei schreiben.
    Mit CWRITE habe ich es geschafft mir eine .TXT Datei zu erstellen und Dinge hineinzuschreiben.
    Allerdings werden alle Werte (in meinem Fall zum Testen die Buchstaben "a" und "b" als "ab" geschrieben.
    Jetzt zu Frage1: Wie kann ich in eine neue Zeile schreiben?


    2. Ich möchte zu Beginn jeder Schicht (also täglich 6Uhr, 14Uhr und 22Uhr) eine neue Datei mit Datum und Schicht-Nr. 1-3 erstellen.
    Könnt ihr mir dazu bitte einen Denkanstoß geben?


    vielen Dank schon mal im Voraus.


    Hier ist der code meines Test Programms:


    DEF DateiErstellenTest( )
    DECL INT HANDLE
    DECL STATE_T STAT
    DECL MODUS_T MODE


    CHAR MYCHAR
    MODE = #SYNC
    HANDLE = 0
    MYCHAR = "a"


    ;Datei erstellen und oeffnen
    CWRITE ($FCT_CALL, STAT, MODE, "krl_fopen", "MyTest.TXT", "w", HANDLE)


    ;"a" schreiben
    CWRITE ($FCT_CALL, STAT, MODE, "krl_fputc", HANDLE, MYCHAR)


    MYCHAR = "b"


    ;"b" schreiben
    CWRITE ($FCT_CALL, STAT, MODE, "krl_fputc", HANDLE, MYCHAR)


    ;Datei schliessen
    CWRITE ($FCT_CALL, STAT, MODE, "krl_fclose", HANDLE)


    END

  • Schritt für Schritt zum Roboterprofi!
  • Naja, wenn man danach wieder was in die Datei schreibt, dann sollte das in eine neue Zeile geschrieben werden.
    In meinem Testprogramm hat's mal funktioniert.
    Würde mich aber nicht wundern, wenn das von der Betriebssystemversion abhängt.


  • Naja, wenn man danach wieder was in die Datei schreibt, dann sollte das in eine neue Zeile geschrieben werden.
    In meinem Testprogramm hat's mal funktioniert.
    Würde mich aber nicht wundern, wenn das von der Betriebssystemversion abhängt.


    Ich nutze KSS 8.3.17


    wenn ich mein Programm laufen lasse kommt das Ergebnis "6 b" (siehe angehängter Screenshot)

  • Tja, das Leben ist hart, und wenn man Kuka-Roboter programmiert ist's härter.
    Fall für die Hotline.
    Auf welcher Version ich das probiert habe weiss ich nicht mehr, ist schon ein paar Tage her. Habe dort aber auch die Funktionen 'krl_fputs' und 'krl_fprintf' benutzt.

  • Hi ck.poorboy,
    zu Punkt 1: probiere das mal


    DEF DateiErstellenTest( )
    DECL INT HANDLE
    DECL STATE_T STAT
    DECL MODUS_T MODE


    CHAR MYCHAR
    MODE = #SYNC
    HANDLE = 0
    MYCHAR = "a"


    ;Datei erstellen und oeffnen
    CWRITE ($FCT_CALL, STAT, MODE, "krl_fopen", "MyTest.TXT", "w", HANDLE)


    ;"a" schreiben
    CWRITE ($FCT_CALL, STAT, MODE, "krl_fputc", HANDLE, MYCHAR)
    CWRITE($FCT_CALL, STAT, MODE, "krl_fwriteln", HANDLE, " ")


    ;inhalt in datei schreiben
    CWRITE($FCT_CALL, STAT, MODE, "krl_fflush", HANDLE)


    MYCHAR = "b"


    ;"b" schreiben
    CWRITE ($FCT_CALL, STAT, MODE, "krl_fputc", HANDLE, MYCHAR)
    CWRITE($FCT_CALL, STAT, MODE, "krl_fwriteln", HANDLE, " ")


    ;inhalt in datei schreiben
    CWRITE($FCT_CALL, STAT, MODE, "krl_fflush", HANDLE)


    ;Datei schliessen
    CWRITE ($FCT_CALL, STAT, MODE, "krl_fclose", HANDLE)


    END


    damit sollte a und b nicht in eine Zeile geschrieben werden.

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

  • Vielen Dank für den reichlichen Support. :danke: :merci:


    Aber jetzt wüsste ich gern noch wie man den Inhalt einer Integer-Variable in eine Datei schreibt.


    mit "krl_fputs" nehme ich mal an, hab schon ne Menge probiert, aber i-wie will es nicht gelingen. :nocheck:

  • so mal auf die schnelle......


    CHAR TempStr[50]
    intVar=1234567


    ;int in tempstring schreiben
    Offset=0
    SWRITE(TempStr[], STAT, Offset, "%d",intVar)


    ;dann tempstring in kanal schreiben
    CWRITE($FCT_CALL, STAT, MODE, "krl_fprintf", HANDLE, "%s",TempStr[])


    man muss vorher die Variablen in einen String schreiben danach diesen String in die Datei schreiben.

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden