<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Read Text File</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/f17c3d0e64/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Engineering/thread/f17c3d0e64/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Engineering/thread/f17c3d0e64/</id><updated>2020-02-27T14:20:22.398000Z</updated><subtitle>Recent posts to Read Text File</subtitle><entry><title>Read Text File</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/f17c3d0e64/?limit=25#8583" rel="alternate"/><published>2020-02-27T14:20:22.398000Z</published><updated>2020-02-27T14:20:22.398000Z</updated><author><name>Oliver</name><uri>https://forge.codesys.com/u/oliver/</uri></author><id>https://forge.codesys.com76d66efab4dddf28de3fa0111d849bfda4ef3580</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;OK I found the errors:&lt;br/&gt;
1. the SysFile library was not activated. It took me quite a while to locate it. It is within the Data_Server library.&lt;br/&gt;
2. after the activation of the Data_server library in my project, I had to relocate the SysFile variables.&lt;/p&gt;
&lt;p&gt;Now there are no errors anymore and I can test the functionality of the code &lt;/p&gt;
&lt;p&gt;Thanks so far!&lt;/p&gt;
&lt;p&gt;Oliver&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Read Text File</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/f17c3d0e64/?limit=25#c0fa" rel="alternate"/><published>2020-02-27T14:20:21.153000Z</published><updated>2020-02-27T14:20:21.153000Z</updated><author><name>Oliver</name><uri>https://forge.codesys.com/u/oliver/</uri></author><id>https://forge.codesys.comde1e9046949c51b84c1417208db9f1bf57e12d8f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello,&lt;br/&gt;
it seems that the code of scott_cunningham does exactly what I want to do in my application. However, I got error messages in the variable declaration section (e.g. in this row&lt;br/&gt;
ErrCode: SysFile.SYS_FILE_STATUS := SysFile.SYS_FILE_STATUS.FS_NO_FILE;): &lt;br/&gt;
"Identifier SysFile not defined". &lt;br/&gt;
In the program section there the functions from the SysFile are linked to the Sysfile library. I tried to find this library, but it seems to be very well hidden.&lt;br/&gt;
My Codesys version is V3.5 and I'm also new in Codesys programming.&lt;br/&gt;
Anyone has got a hint for me?&lt;br/&gt;
Greetings!&lt;br/&gt;
Oliver&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Read Text File</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/f17c3d0e64/?limit=25#d274" rel="alternate"/><published>2020-02-27T14:20:20.603000Z</published><updated>2020-02-27T14:20:20.603000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.comd97661518b9295ba5934965e1fb1ba5257a15432</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; scott_cunningham&lt;/p&gt;
&lt;p&gt;To answer your questions:&lt;/p&gt;
&lt;p&gt;Q1:  I think the characters are still there for you to parse. You will need to make a small test - I don't 100% remember. &lt;/p&gt;
&lt;p&gt;Q2: The open/read/writes are function calls and so they execute and that's it - no need to "wait". Double check how long the execute time is - depending on size of read and hardware platform....&lt;/p&gt;
&lt;p&gt;For embedded systems you typically need to read smaller chunks instead of a large file.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Read Text File</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/f17c3d0e64/?limit=25#fcbd" rel="alternate"/><published>2020-02-27T14:20:20.048000Z</published><updated>2020-02-27T14:20:20.048000Z</updated><author><name>Gyzmologist</name><uri>https://forge.codesys.com/u/gyzmologist/</uri></author><id>https://forge.codesys.com8eb6316e3102d2540ec712ccf1397e5ba52c4fd1</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;That was very helpful - thanks!&lt;/p&gt;
&lt;p&gt;I have a some questions not answered in the help file that I'd like to ask.&lt;/p&gt;
&lt;p&gt;Q1: Is the data read from the file altered in any way, such a stripping off line terminations (cr/lf)?&lt;/p&gt;
&lt;p&gt;Q2: Do the Open/Read/Close functions block execution until completed (success or fail), or do I have to set up a loop and wait for them to complete?&lt;/p&gt;
&lt;p&gt;Thanks! I really appreciate your help.&lt;br/&gt;
Gyz&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Read Text File</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/f17c3d0e64/?limit=25#1370" rel="alternate"/><published>2020-02-27T14:20:18.490000Z</published><updated>2020-02-27T14:20:18.490000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.comfd410753f02e8b1f0df21b8932ffad7f71b23f27</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; scott_cunningham&lt;/p&gt;
&lt;p&gt;You will need to use the library SysFile and the functions: SysFileOpen, SysFileRead and SysFileClose.  Here is a sample view of a ReadFile program.  I suggest adding an FB_EXIT() method (see online help) to the ReadFile program which calls SysFileClose - that helps avoid file handles being left open when the system is interrupted...  Hope this helps!&lt;/p&gt;
&lt;p&gt;HINT: Some hardware platforms do not support AM_APPEND modes (typically flash based memory devices that don't have hard drives/CF cards/SD cards).&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;PROGRAM&lt;/span&gt; &lt;span class="nv"&gt;ReadFile&lt;/span&gt;
&lt;span class="nv"&gt;VAR&lt;/span&gt; &lt;span class="nv"&gt;CONSTANT&lt;/span&gt;
   &lt;span class="nv"&gt;MAX_BUFFER&lt;/span&gt; : &lt;span class="nv"&gt;__XWORD&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;999&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;span class="nv"&gt;VAR_INPUT&lt;/span&gt;
   &lt;span class="nv"&gt;FileName&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;c:/test.txt&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;span class="nv"&gt;VAR_OUTPUT&lt;/span&gt;
   &lt;span class="nv"&gt;Done&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&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;ErrCode&lt;/span&gt; : &lt;span class="nv"&gt;SysFile&lt;/span&gt;.&lt;span class="nv"&gt;SYS_FILE_STATUS&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysFile&lt;/span&gt;.&lt;span class="nv"&gt;SYS_FILE_STATUS&lt;/span&gt;.&lt;span class="nv"&gt;FS_NO_FILE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;Data&lt;/span&gt; : &lt;span class="nv"&gt;ARRAY&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;..&lt;span class="nv"&gt;MAX_BUFFER&lt;/span&gt;] &lt;span class="nv"&gt;OF&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;BytesRead&lt;/span&gt; : &lt;span class="nv"&gt;__XWORD&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_VAR&lt;/span&gt;
&lt;span class="nv"&gt;VAR&lt;/span&gt;
   &lt;span class="nv"&gt;pResult&lt;/span&gt; : &lt;span class="nv"&gt;POINTER&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;SysFile&lt;/span&gt;.&lt;span class="nv"&gt;RTS_IEC_RESULT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;FileHandle&lt;/span&gt; : &lt;span class="nv"&gt;SysFile&lt;/span&gt;.&lt;span class="nv"&gt;RTS_IEC_HANDLE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;pFileData&lt;/span&gt; : &lt;span class="nv"&gt;POINTER&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;BYTE&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;Data&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_VAR&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;try&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;open&lt;/span&gt; &lt;span class="nv"&gt;file&lt;/span&gt;
&lt;span class="nv"&gt;FileHandle&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysFileOpen&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;szFile&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FileName&lt;/span&gt;, &lt;span class="nv"&gt;am&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;AM_READ&lt;/span&gt;, &lt;span class="nv"&gt;pResult&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;pResult&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;verify&lt;/span&gt; &lt;span class="nv"&gt;found&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;file&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;FileHandle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysFile&lt;/span&gt;.&lt;span class="nv"&gt;RTS_INVALID_HANDLE&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;no&lt;/span&gt; &lt;span class="nv"&gt;file&lt;/span&gt; &lt;span class="nv"&gt;found&lt;/span&gt;
   &lt;span class="nv"&gt;ErrCode&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysFile&lt;/span&gt;.&lt;span class="nv"&gt;SYS_FILE_STATUS&lt;/span&gt;.&lt;span class="nv"&gt;FS_NO_FILE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;Done&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="k"&gt;ELSE&lt;/span&gt;
   &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;try&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;read&lt;/span&gt; &lt;span class="nv"&gt;file&lt;/span&gt; &lt;span class="nv"&gt;out&lt;/span&gt;
   &lt;span class="nv"&gt;BytesRead&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysFileRead&lt;/span&gt;&lt;span class="ss"&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;FileHandle&lt;/span&gt;, &lt;span class="nv"&gt;pbyBuffer&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;pFileData&lt;/span&gt;, &lt;span class="nv"&gt;ulSize&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;MAX_BUFFER&lt;/span&gt;, &lt;span class="nv"&gt;pResult&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;pResult&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   
   &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;check&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nv"&gt;actually&lt;/span&gt; &lt;span class="nv"&gt;read&lt;/span&gt; &lt;span class="nv"&gt;any&lt;/span&gt; &lt;span class="nv"&gt;bytes&lt;/span&gt;
   &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;BytesRead&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
      &lt;span class="nv"&gt;ErrCode&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysFile&lt;/span&gt;.&lt;span class="nv"&gt;SYS_FILE_STATUS&lt;/span&gt;.&lt;span class="nv"&gt;FS_OK&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;ELSE&lt;/span&gt;
      &lt;span class="nv"&gt;ErrCode&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysFile&lt;/span&gt;.&lt;span class="nv"&gt;SYS_FILE_STATUS&lt;/span&gt;.&lt;span class="nv"&gt;FS_NO_FILE&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;Done&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;END_IF&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;SysFileClose&lt;/span&gt;&lt;span class="ss"&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;FileHandle&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><entry><title>Read Text File</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/f17c3d0e64/?limit=25#8a70" rel="alternate"/><published>2020-02-27T14:20:17.994000Z</published><updated>2020-02-27T14:20:17.994000Z</updated><author><name>Gyzmologist</name><uri>https://forge.codesys.com/u/gyzmologist/</uri></author><id>https://forge.codesys.com0d63d984d6a88fcff44edc6b7e945373a921f543</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I want to read a text file containing two INT pairs into a two dimension INT array. The text files will be created externally and copied onto the controller when updated. This will be a headless system (no display).&lt;/p&gt;
&lt;p&gt;Does anyone have an ST program example of opening and reading a text file? I downloaded an example used in the help file, but it's not very helpful. I have a lot of programming experience with multiple languages but am new to CodeSys and IEC PLCs.&lt;/p&gt;
&lt;p&gt;TIA!&lt;br/&gt;
Gyz&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>