<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to txt file log</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/03ee002e97/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Runtime/thread/03ee002e97/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Runtime/thread/03ee002e97/</id><updated>2020-02-27T15:22:47.771000Z</updated><subtitle>Recent posts to txt file log</subtitle><entry><title>txt file log</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/03ee002e97/?limit=25#d696" rel="alternate"/><published>2020-02-27T15:22:47.771000Z</published><updated>2020-02-27T15:22:47.771000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.comde7c0ade389bb69baa148df18382e98426d4a200</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; Primitive Source&lt;/p&gt;
&lt;p&gt;Hi, I am having issues with txt file logging using raspberry pi and can't work out where I am going wrong. I am creating a STRING called FINSTR, it contains data from a temperature sensor, humidity sensor etc. My process is basically as follows a tank is emptied and then it is filled, each time the tank is filled I have a BOOL FiWr that becomes true for a few seconds the stops. FINSTR is written to the the txt file each time FiWr becomes true. The issue I have is that rather than adding the FINSTR on a new line/append at the end of the file it just overwrites the existing data. I want the txt file to end up like this after a few cycles;&lt;/p&gt;
&lt;p&gt;23, 199, 267,&lt;br/&gt;
28, 194, 267,&lt;br/&gt;
28, 193, 267,&lt;/p&gt;
&lt;p&gt;But I am getting &lt;/p&gt;
&lt;p&gt;23, 199, 267, &lt;/p&gt;
&lt;p&gt;and then it is over written and the file reads&lt;/p&gt;
&lt;p&gt;28, 194, 267,&lt;/p&gt;
&lt;p&gt;FINSTR is a CONCAT of (SEMFINSTR, '$R$L'). I am using an altered version of the CAA File Standard example as per below.&lt;/p&gt;
&lt;p&gt;xFileStdInit:= RUN;&lt;/p&gt;
&lt;p&gt;IF NOT xFileStdInit THEN&lt;br/&gt;
    filop(xExecute:=FALSE);&lt;br/&gt;
    filcl(xExecute:=FALSE);&lt;br/&gt;
    filwr(xExecute:=FALSE);&lt;br/&gt;
    filrd(xExecute:=FALSE);&lt;br/&gt;
    xFileStdInit:=TRUE;&lt;br/&gt;
    uiFileStdState:=0;&lt;br/&gt;
ELSE&lt;br/&gt;
    CASE uiFileStdState OF&lt;br/&gt;
        0:(&lt;em&gt; create a new file &lt;/em&gt;)&lt;br/&gt;
            filop.sFileName:=sFileName;&lt;br/&gt;
            filop.eFileMode:=FILE.MODE.MRDWR;&lt;br/&gt;
            filop.xExclusive:=TRUE;&lt;br/&gt;
            filop( xExecute:=TRUE);&lt;br/&gt;
            IF filop.xDone THEN&lt;br/&gt;
                hFile:=filop.hFile;&lt;br/&gt;
                uiFileStdState:=1;&lt;br/&gt;
            END_IF&lt;br/&gt;
            IF filop.xError THEN&lt;br/&gt;
                (&lt;em&gt; error handling&lt;/em&gt;)&lt;br/&gt;
                ;&lt;br/&gt;
            END_IF&lt;br/&gt;
        1:(&lt;em&gt; close file  - TestFile.txt &lt;/em&gt;)&lt;br/&gt;
            filcl.hFile:=hFile;&lt;br/&gt;
            filcl( xExecute:=TRUE);&lt;br/&gt;
            IF filcl.xDone THEN&lt;br/&gt;
                uiFileStdState:=2;&lt;br/&gt;
            END_IF&lt;br/&gt;
            IF filcl.xError THEN&lt;br/&gt;
                (&lt;em&gt; error handling&lt;/em&gt;)&lt;br/&gt;
                ;&lt;br/&gt;
            END_IF&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;    &lt;span class="mi"&gt;2&lt;/span&gt;:&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;example&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_CASE&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_IF&lt;/p&gt;
&lt;p&gt;IF NOT  FiWr THEN&lt;br/&gt;
    filop(xExecute:=FALSE);&lt;br/&gt;
    filcl(xExecute:=FALSE);&lt;br/&gt;
    filwr(xExecute:=FALSE);&lt;br/&gt;
    filrd(xExecute:=FALSE);&lt;br/&gt;
    FiWr:= TRUE;&lt;br/&gt;
    csvwrite:=0;&lt;br/&gt;
ELSE&lt;br/&gt;
    CASE csvwrite OF&lt;br/&gt;
        0:(&lt;em&gt; create a new file &lt;/em&gt;)&lt;br/&gt;
            filop.sFileName:=sFileName;&lt;br/&gt;
            filop.eFileMode:=FILE.MODE.MAPPD;&lt;br/&gt;
            filop.xExclusive:=TRUE;&lt;br/&gt;
            filop( xExecute:=TRUE);&lt;br/&gt;
            IF filop.xDone THEN&lt;br/&gt;
                hFile:=filop.hFile;&lt;br/&gt;
               csvwrite:=1;&lt;br/&gt;
            END_IF&lt;br/&gt;
            IF filop.xError THEN&lt;br/&gt;
                (&lt;em&gt; error handling&lt;/em&gt;)&lt;br/&gt;
                ;&lt;br/&gt;
            END_IF&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;    &lt;span class="mi"&gt;1&lt;/span&gt;:&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;write&lt;/span&gt; &lt;span class="nv"&gt;text&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;file&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
        &lt;span class="nv"&gt;filwr&lt;/span&gt;.&lt;span class="nv"&gt;hFile&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;hFile&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;filwr&lt;/span&gt;.&lt;span class="nv"&gt;pBuffer&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;FINSTR&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;szFileSize1&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;FINSTR&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;filwr&lt;/span&gt;.&lt;span class="nv"&gt;szSize&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;szFileSize1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;filwr&lt;/span&gt;.&lt;span class="nv"&gt;udiTimeOut&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100000&lt;/span&gt;&lt;span class="c1"&gt;;    (* 100ms Timeout *)&lt;/span&gt;
        &lt;span class="nv"&gt;filwr&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;xExecute&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;filwr&lt;/span&gt;.&lt;span class="nv"&gt;xDone&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
            &lt;span class="nv"&gt;csvwrite&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;END_IF&lt;/span&gt;
        &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;filwr&lt;/span&gt;.&lt;span class="nv"&gt;xError&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
            &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;error&lt;/span&gt; &lt;span class="nv"&gt;handling&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
            &lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;END_IF&lt;/span&gt;

    &lt;span class="mi"&gt;2&lt;/span&gt;:&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;close&lt;/span&gt; &lt;span class="nv"&gt;file&lt;/span&gt;  &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nv"&gt;TestFile&lt;/span&gt;.&lt;span class="nv"&gt;txt&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
        &lt;span class="nv"&gt;filcl&lt;/span&gt;.&lt;span class="nv"&gt;hFile&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;hFile&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;filcl&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;xExecute&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;filcl&lt;/span&gt;.&lt;span class="nv"&gt;xDone&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
            &lt;span class="nv"&gt;csvwrite&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;END_IF&lt;/span&gt;
        &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;filcl&lt;/span&gt;.&lt;span class="nv"&gt;xError&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
            &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;error&lt;/span&gt; &lt;span class="nv"&gt;handling&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
            &lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;END_IF&lt;/span&gt;

    &lt;span class="mi"&gt;3&lt;/span&gt;:&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;example&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_CASE&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_IF&lt;/p&gt;
&lt;p&gt;For some reason if I open the file in MAPPD mode initially the file isn't created? This is why I have 2 cases, one that creates the file when the programme is set to RUN and the second case writes the data to the file each time FiWr is true.&lt;/p&gt;
&lt;p&gt;I hope you can help me as it is driving me crazy?! &lt;/p&gt;&lt;/div&gt;</summary></entry></feed>