<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to read and write a file to a raspberry folder</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/d5b8afdd59/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Runtime/thread/d5b8afdd59/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Runtime/thread/d5b8afdd59/</id><updated>2020-11-01T09:06:55.428000Z</updated><subtitle>Recent posts to read and write a file to a raspberry folder</subtitle><entry><title>read and write a file to a raspberry folder</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/d5b8afdd59/?limit=25#fe7a" rel="alternate"/><published>2020-11-01T09:06:55.428000Z</published><updated>2020-11-01T09:06:55.428000Z</updated><author><name>dvincent</name><uri>https://forge.codesys.com/u/dvincent/</uri></author><id>https://forge.codesys.com8b128a7db235e2676f0df74e970e23fec1f78e9a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;br/&gt;
I want to do the same in XML , do you make it working ?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>read and write a file to a raspberry folder</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/d5b8afdd59/?limit=25#96dc" rel="alternate"/><published>2020-06-16T07:19:32.701000Z</published><updated>2020-06-16T07:19:32.701000Z</updated><author><name>pixtenduser2</name><uri>https://forge.codesys.com/u/pixtenduser2/</uri></author><id>https://forge.codesys.com351b772305a107a9c4307cde6f40c5cf67d0a997</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Dear programmers,&lt;/p&gt;
&lt;p&gt;I'm trying to write a programm, which reads and writes a config file to the raspberry pi filesystem. &lt;br/&gt;
When I start the Pi, I want to read out the config and when I press a button ("save"), I want the programm to read out some variables and write them into the config file (.csv).&lt;br/&gt;
I'm using the File Access library from 3S, but I can't get it to work.&lt;br/&gt;
The problem is, that the function blocks "FILE.write" and "FILE.close don't work correctly in my setup. &lt;br/&gt;
The eError outputs always return "handle invalid". I tried multiple settings for the csv-file (test.csv). I copied a valid version (filled with string data) of this file to the raspberry pi, I gave it the chmod 777 and 666 permissions, I let the programm create a new file and so on. But every time, I get "invalid handle". The FILE.open always returns a hfile (handle) with "0", and the write- and/or close-FB can't finish.&lt;br/&gt;
If I copy a valid file to the raspberry, it has "0" size after opening and writing with my code.&lt;/p&gt;
&lt;p&gt;Can you explain me how I get to manage this problem? I would be very thankful for some advice.&lt;/p&gt;
&lt;p&gt;I added the code which I used:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;VAR&lt;/span&gt;
    &lt;span class="nv"&gt;bConfigWrite_Index&lt;/span&gt; : &lt;span class="nv"&gt;BYTE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;xWriteConfig&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;sTEST&lt;/span&gt;: &lt;span class="nv"&gt;STRING&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;TEST&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;FB_OpenFile&lt;/span&gt; : &lt;span class="nv"&gt;FILE&lt;/span&gt;.&lt;span class="nv"&gt;Open&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;FB_WriteFile&lt;/span&gt; : &lt;span class="nv"&gt;FILE&lt;/span&gt;.&lt;span class="nv"&gt;Write&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;FB_CloseFile&lt;/span&gt; : &lt;span class="nv"&gt;FILE&lt;/span&gt;.&lt;span class="nv"&gt;Close&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;


    &lt;span class="nv"&gt;xOpenFile&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;xOpenFile_DONE&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;xOpenConfig_Error&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;eFileMode_Config&lt;/span&gt; : &lt;span class="nv"&gt;FILE&lt;/span&gt;.&lt;span class="nv"&gt;MODE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;eError_Config&lt;/span&gt; : &lt;span class="nv"&gt;FILE&lt;/span&gt;.&lt;span class="nv"&gt;ERROR&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

    &lt;span class="nv"&gt;xWriteFile&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;xAbortFile&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;xWriteFile_DONE&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;xWriteConfig_Error&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;eError_Write&lt;/span&gt; : &lt;span class="nv"&gt;FILE&lt;/span&gt;.&lt;span class="nv"&gt;ERROR&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

    &lt;span class="nv"&gt;xCloseFile&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;xCloseConfig_DONE&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;xCloseConfig_Error&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;eCloseConfig_Error&lt;/span&gt; : &lt;span class="nv"&gt;FILE&lt;/span&gt;.&lt;span class="nv"&gt;ERROR&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;


&lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;PROGRAMM&lt;/span&gt;

&lt;span class="nv"&gt;CASE&lt;/span&gt; &lt;span class="nv"&gt;bConfigWrite_Index&lt;/span&gt; &lt;span class="nv"&gt;OF&lt;/span&gt;

    &lt;span class="mi"&gt;0&lt;/span&gt;:  &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;xWriteConfig&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                    &lt;span class="nv"&gt;xOpenFile&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                    &lt;span class="nv"&gt;eFileMode_Config&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;File&lt;/span&gt;.&lt;span class="nv"&gt;MODE&lt;/span&gt;.&lt;span class="nv"&gt;MWRITE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                    &lt;span class="nv"&gt;bConfigWrite_Index&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                    &lt;span class="nv"&gt;xWriteConfig&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&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;10&lt;/span&gt;: &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;xOpenFile_DONE&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                    &lt;span class="nv"&gt;xOpenFile&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                    &lt;span class="nv"&gt;bConfigWrite_Index&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&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;20&lt;/span&gt;: &lt;span class="nv"&gt;xWriteFile&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
            &lt;span class="nv"&gt;bConfigWrite_Index&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;


    &lt;span class="mi"&gt;21&lt;/span&gt;: &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;xWriteFile_DONE&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                    &lt;span class="nv"&gt;xWriteFile&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                    &lt;span class="nv"&gt;bConfigWrite_Index&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&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;30&lt;/span&gt;: &lt;span class="nv"&gt;xCloseFile&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
            &lt;span class="nv"&gt;bConfigWrite_Index&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;


    &lt;span class="mi"&gt;40&lt;/span&gt;: &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;xCloseConfig_DONE&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                    &lt;span class="nv"&gt;xCloseFile&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                    &lt;span class="nv"&gt;bConfigWrite_Index&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
             &lt;span class="nv"&gt;END_IF&lt;/span&gt;

&lt;span class="nv"&gt;END_CASE&lt;/span&gt;


&lt;span class="nv"&gt;FB_OpenFile&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;xOpenFile&lt;/span&gt;, 
        &lt;span class="nv"&gt;xDone&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;xOpenFile_DONE&lt;/span&gt;, 
        &lt;span class="nv"&gt;xBusy&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; , 
        &lt;span class="nv"&gt;xError&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;xOpenConfig_Error&lt;/span&gt;, 
        &lt;span class="nv"&gt;sFileName&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/home/pi/test/test.csv&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;, 
        &lt;span class="nv"&gt;eFileMode&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;eFileMode_Config&lt;/span&gt;, 
        &lt;span class="nv"&gt;xExclusive&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt;, 
        &lt;span class="nv"&gt;eError&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;eError_Config&lt;/span&gt;, 
        &lt;span class="nv"&gt;hFile&lt;/span&gt;&lt;span class="o"&gt;=&amp;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;FB_WriteFile&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;xWriteFile&lt;/span&gt;, 
            &lt;span class="nv"&gt;xAbort&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;xAbortWrite&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="nv"&gt;xDone&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;xWriteFile_DONE&lt;/span&gt;, 
            &lt;span class="nv"&gt;xBusy&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; , 
            &lt;span class="nv"&gt;xError&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;xWriteConfig_Error&lt;/span&gt;, 
            &lt;span class="nv"&gt;xAborted&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&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;FB_OpenFile&lt;/span&gt;.&lt;span class="nv"&gt;hFile&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;sTEST&lt;/span&gt;&lt;span class="ss"&gt;)&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;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;sTEST&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, 
            &lt;span class="nv"&gt;eError&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;eError_Write&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;FB_CloseFile&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;xCloseFile&lt;/span&gt;, 
        &lt;span class="nv"&gt;xDone&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;xCloseConfig_DONE&lt;/span&gt;, 
        &lt;span class="nv"&gt;xBusy&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; , 
        &lt;span class="nv"&gt;xError&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;xCloseConfig_Error&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;FB_OpenFile&lt;/span&gt;.&lt;span class="nv"&gt;hFile&lt;/span&gt;, 
        &lt;span class="nv"&gt;eError&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;eCloseConfig_Error&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</summary></entry></feed>