<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Visualization Screen is not being updated when writing a TXT file</title><link href="https://forge.codesys.com/forge/talk/Visualization/thread/4dbf1f812c/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Visualization/thread/4dbf1f812c/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Visualization/thread/4dbf1f812c/</id><updated>2020-02-27T17:58:58.598000Z</updated><subtitle>Recent posts to Visualization Screen is not being updated when writing a TXT file</subtitle><entry><title>Visualization Screen is not being updated when writing a TXT file</title><link href="https://forge.codesys.com/forge/talk/Visualization/thread/4dbf1f812c/?limit=25#33d2" rel="alternate"/><published>2020-02-27T17:58:58.598000Z</published><updated>2020-02-27T17:58:58.598000Z</updated><author><name>leandroct</name><uri>https://forge.codesys.com/u/leandroct/</uri></author><id>https://forge.codesys.com55c564fed87860bb009a1aa5505be0ab24df4991</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Even when not in a loop, I have the same problem unless I rise up the interval of ciclic time to over 20ms. But this is not desired....&lt;br/&gt;
However, my final project would be with the multi-core codesys. Then, I think this wouldn't be a problem to me, once I can put the TXT file program in a separate core. I will wait to buy it and then I will reanalize this issue.&lt;br/&gt;
Thanks!!&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Visualization Screen is not being updated when writing a TXT file</title><link href="https://forge.codesys.com/forge/talk/Visualization/thread/4dbf1f812c/?limit=25#8471" rel="alternate"/><published>2020-02-27T17:58:57.546000Z</published><updated>2020-02-27T17:58:57.546000Z</updated><author><name>Comingback4u</name><uri>https://forge.codesys.com/u/comingback4u/</uri></author><id>https://forge.codesys.com348fdd51182e4e24ce5fe3f84a0b3b8df17a8497</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Do you need to use FOR loops? I would highly consider changing it to a CASE statement so that your program can continue to cycle properly. A good example can be found in the help: &lt;a class="" href="https://help.codesys.com/webapp/Examples;product=CAA_FILE;version=3.5.13.0" rel="nofollow"&gt;https://help.codesys.com/webapp/Examples;product=CAA_FILE;version=3.5.13.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A FOR loop might be the fastest way to save the file but as you've noticed it drastically increases cycle time for that 1 cycle you are saving a file. This means that other lower priority tasks get put on hold. You can get creative with creating a separate task for saving the files that will help speed up the saving process if you don't want to lock up the system.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Visualization Screen is not being updated when writing a TXT file</title><link href="https://forge.codesys.com/forge/talk/Visualization/thread/4dbf1f812c/?limit=25#c6d9" rel="alternate"/><published>2020-02-27T17:58:54.564000Z</published><updated>2020-02-27T17:58:54.564000Z</updated><author><name>mprestel</name><uri>https://forge.codesys.com/u/mprestel/</uri></author><id>https://forge.codesys.com47385387ead685db7dbfc2c353d4c4d78a481535</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello sir,&lt;/p&gt;
&lt;p&gt;no there is no public way to force a screen update.&lt;br/&gt;
Even if there would be a way, if the VISU_TASK gets no CPU-time, it cannot paint.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br/&gt;
Marcel&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Visualization Screen is not being updated when writing a TXT file</title><link href="https://forge.codesys.com/forge/talk/Visualization/thread/4dbf1f812c/?limit=25#207f" rel="alternate"/><published>2020-02-27T17:58:53.513000Z</published><updated>2020-02-27T17:58:53.513000Z</updated><author><name>leandroct</name><uri>https://forge.codesys.com/u/leandroct/</uri></author><id>https://forge.codesys.com2bea68846c24c70b4c5a4204bc512973c1d5aa3d</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Yes. This is true. But in fact I would like my program with priority over screen. I understood that with 1 ms of ciclic interval, my program takes all processment and the screen doesn`t update even when the program is not in a loop. Then, my question is:&lt;br/&gt;
&lt;strong&gt;Is there a way to call a screen update by program?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Thank you by your reply!&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Visualization Screen is not being updated when writing a TXT file</title><link href="https://forge.codesys.com/forge/talk/Visualization/thread/4dbf1f812c/?limit=25#2c25" rel="alternate"/><published>2020-02-27T17:58:52.459000Z</published><updated>2020-02-27T17:58:52.459000Z</updated><author><name>mprestel</name><uri>https://forge.codesys.com/u/mprestel/</uri></author><id>https://forge.codesys.com6fee40defd107c6089bc4df0c995d0093eabc82a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello sir,&lt;/p&gt;
&lt;p&gt;could it be that in your project the visu_task has a lower priority than the task you use to write to the file?&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br/&gt;
Marcel&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Visualization Screen is not being updated when writing a TXT file</title><link href="https://forge.codesys.com/forge/talk/Visualization/thread/4dbf1f812c/?limit=25#9a79" rel="alternate"/><published>2020-02-27T17:58:49.405000Z</published><updated>2020-02-27T17:58:49.405000Z</updated><author><name>leandroct</name><uri>https://forge.codesys.com/u/leandroct/</uri></author><id>https://forge.codesys.com064806c3746a7604e4e9939e810569b2e06e01c0</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;My application saves data in a .txt file. I have created a progress bar to indicate the progress of the file writing up to 100%. However, when the program runs, the screen no longer refreshes until the writing in the file is completed.&lt;br/&gt;
I was wondering if &lt;span style="color: underline;"&gt;&lt;strong&gt;there is a way to give an update on the screen through a program line&lt;/strong&gt;&lt;/span&gt;.&lt;br/&gt;
The program writes the entire file in a loop. So I made a second program option without the loop, where it writes one part at each scan, but even then the progress bar does not update. Why does this happen?&lt;/p&gt;
&lt;p&gt;PROGRAM SALVA_LEIT_WTXT&lt;br/&gt;
VAR&lt;br/&gt;
    IP: STRING := '192.168.0.1';&lt;br/&gt;
    // TRANSITION OF START OF WRITING&lt;br/&gt;
    TR_SSALV: R_TRIG;&lt;br/&gt;
    Date_Time: RTCLK.GetDateAndTime;&lt;br/&gt;
    // YEAR&lt;br/&gt;
    ANO: UINT;&lt;br/&gt;
    // MONTH&lt;br/&gt;
    MES: UINT;&lt;br/&gt;
    // DAY&lt;br/&gt;
    DIA: UINT;&lt;br/&gt;
    // HOUR&lt;br/&gt;
    HORA: UINT;&lt;br/&gt;
    // MINUTE&lt;br/&gt;
    MINUTO: UINT;&lt;br/&gt;
    // SECONDS&lt;br/&gt;
    SEGUNDO: UINT;&lt;br/&gt;
    // STRING YEAR&lt;br/&gt;
    STR_ANO: STRING;&lt;br/&gt;
    // STRING MONTH&lt;br/&gt;
    STR_MES: STRING;&lt;br/&gt;
    // STRING DAY&lt;br/&gt;
    STR_DIA: STRING;&lt;br/&gt;
    // STRING HOUR&lt;br/&gt;
    STR_HORA: STRING;&lt;br/&gt;
    // STRING MINUTE&lt;br/&gt;
    STR_MINUTO: STRING;&lt;br/&gt;
    sFileName:  CAA.FILENAME;&lt;br/&gt;
    // SIZE OF STRING&lt;br/&gt;
    TAM_STR: INT;&lt;br/&gt;
    // DATA VALUE CONVERTED TO STRING&lt;br/&gt;
    VAL_STRING2: STRING;&lt;br/&gt;
    // STRING OF TIME&lt;br/&gt;
    TEMPO_STRING: STRING;&lt;br/&gt;
    LOOP: INT;&lt;br/&gt;
    txt_Virg: STRING := ',';&lt;br/&gt;
    txt_Fim_Cab: STRING := '}';&lt;br/&gt;
    txt_Tempo: STRING := 'TIME:';&lt;br/&gt;
    txt_IP: STRING := '{IP:';&lt;br/&gt;
   udiWriteError1      : RTS_IEC_RESULT;&lt;br/&gt;
   udiCloseError1   : RTS_IEC_RESULT;&lt;br/&gt;
   xText_Write: STRING(10000);&lt;br/&gt;
   udiWrite      : UDINT;&lt;br/&gt;
   udiOpenError1      : RTS_IEC_RESULT;&lt;/p&gt;
&lt;p&gt;hFile           : RTS_IEC_HANDLE := RTS_INVALID_HANDLE;&lt;br/&gt;
    // WRITE FILE&lt;br/&gt;
    MESCR: BOOL;&lt;br/&gt;
    MDATA: BOOL;&lt;br/&gt;
    // TRANSITION OF END OF WRITING&lt;br/&gt;
    TR2_NSSALV: F_TRIG;&lt;br/&gt;
    LOOP2: UINT;&lt;br/&gt;
    // PERCENTAGE OF WRITING TO PROGRESS BAR&lt;br/&gt;
    RPERC: REAL;&lt;br/&gt;
    // TRANSITION OF START&lt;br/&gt;
    TR_INIC: R_TRIG;&lt;br/&gt;
    // SAVE&lt;br/&gt;
    SSALV: BOOL;&lt;br/&gt;
    // TABLE OF TIMES OF DATA STORED TO WRITE TO TXT&lt;br/&gt;
    TEMPO: ARRAY&lt;span&gt;[1..10000]&lt;/span&gt; OF UDINT;&lt;br/&gt;
    // STORED DATA TO WRITE TO TXT&lt;br/&gt;
    MSG_COM: ARRAY&lt;span&gt;[1..10000, 1..5008]&lt;/span&gt; OF BYTE;&lt;br/&gt;
END_VAR&lt;/p&gt;
&lt;p&gt;// THIS PROGRAM WRITES THE FULL TXT FILE IN A LOOP, AND THE PROGRESS BAR IN THE SCREEN DOESN`T UPDATE.&lt;br/&gt;
// (IF I PUT THE PROGRAM IN STEP-BY-STEP, THE PROGRESS BAR UPDATES)&lt;/p&gt;
&lt;p&gt;TR_SSALV(CLK:=SSALV); IF TR_SSALV.Q THEN MESCR:=TRUE; END_IF; // SET BIT OF STARTING OF FILE WRITING&lt;br/&gt;
TR2_NSSALV(CLK:=MESCR);&lt;br/&gt;
IF TR2_NSSALV.Q THEN udiCloseError1:= SysFileClose(hFile:= hFile); END_IF; //Close the file at the end&lt;/p&gt;
&lt;p&gt;//DEFINE THE FILE NAME AND DIRECTORY&lt;br/&gt;
IF MESCR AND NOT Date_Time.xDone THEN&lt;br/&gt;
    GVL.ESCO := FALSE; &lt;br/&gt;
    Date_Time(xExecute:= TRUE);&lt;br/&gt;
    DTU.DTSplit(dtDateAndTime:= Date_Time.dtDateAndTime, puiYear:=ADR(ANO), puiMonth:= ADR(MES), puiDay:= ADR(DIA), puiHour:= ADR(HORA), puiMinute:= ADR(MINUTO), puiSecond:= ADR(SEGUNDO));//PEGA DADOS DE DATA E HORA&lt;br/&gt;
    STR_ANO := CONCAT(UINT_TO_STRING(ANO),'&lt;em&gt;'); STR_MES := CONCAT(UINT_TO_STRING(MES),'&lt;/em&gt;'); STR_DIA := CONCAT(UINT_TO_STRING(DIA),'&lt;em&gt;'); STR_HORA := CONCAT(UINT_TO_STRING(HORA),'&lt;/em&gt;'); STR_MINUTO := CONCAT(UINT_TO_STRING(MINUTO),'_');&lt;br/&gt;
    sFileName := CONCAT(STR_ANO,STR_MES); sFileName := CONCAT(sFileName,STR_DIA); sFileName := CONCAT(sFileName,STR_HORA); sFileName := CONCAT(sFileName,STR_MINUTO); sFileName := CONCAT(sFileName,UINT_TO_STRING(SEGUNDO)); sFileName := CONCAT(sFileName,'.txt');&lt;br/&gt;
    sFileName := CONCAT('C:\Laser\Gravados\', sFileName);&lt;br/&gt;
    hFile:= SysFileOpen(szFile:= sFileName, am:= ACCESS_MODE.AM_WRITE_PLUS, pResult:= ADR(udiOpenError1));&lt;br/&gt;
    MDATA := FALSE;&lt;br/&gt;
    IF Date_Time.xError THEN&lt;br/&gt;
        //erro&lt;br/&gt;
    END_IF&lt;br/&gt;
END_IF&lt;/p&gt;
&lt;p&gt;//STARTING STRING VARIABLE&lt;br/&gt;
TR_INIC(CLK := Date_Time.xDone);&lt;br/&gt;
IF TR_INIC.Q THEN xText_Write := ''; END_IF;&lt;/p&gt;
&lt;p&gt;//MOUNTING THE PACKAGE STRING AND WRITING TO TXT&lt;br/&gt;
IF MESCR AND Date_Time.xDone THEN&lt;br/&gt;
    FOR LOOP2 := 1 TO 3000 BY 1 DO&lt;br/&gt;
        RPERC := 100.0 * (UINT_TO_REAL(LOOP2) / 3000.0); //PERCENT OF PROGRESS BAR&lt;br/&gt;
        //IS THERE A WAY TO CALL HERE A SCREEN UPDATE BY PROGRAM LINE?????????????????????????????&lt;br/&gt;
        StrConcatA(pstFrom:= ADR(txt_IP), pstTo:= ADR(xText_Write), iBufferSize:= 10000);&lt;br/&gt;
        StrConcatA(pstFrom:= ADR(IP), pstTo:= ADR(xText_Write), iBufferSize:= 10000);&lt;br/&gt;
        StrConcatA(pstFrom:= ADR(txt_Virg), pstTo:= ADR(xText_Write), iBufferSize:= 10000);&lt;br/&gt;
        StrConcatA(pstFrom:= ADR(txt_Tempo), pstTo:= ADR(xText_Write), iBufferSize:= 10000);&lt;br/&gt;
        TEMPO_STRING := UDINT_TO_STRING(TEMPO&lt;span&gt;[LOOP2]&lt;/span&gt;);&lt;br/&gt;
        StrConcatA(pstFrom:= ADR(TEMPO_STRING), pstTo:= ADR(xText_Write), iBufferSize:= 10000);&lt;br/&gt;
        StrConcatA(pstFrom:= ADR(txt_Fim_Cab), pstTo:= ADR(xText_Write), iBufferSize:= 10000);&lt;br/&gt;
        FOR LOOP:= 1 TO 5008 BY 1 DO&lt;br/&gt;
            VAL_STRING2 := INT_TO_STRING(MSG_COM&lt;span&gt;[LOOP2,LOOP]&lt;/span&gt;);&lt;br/&gt;
            StrConcatA(pstFrom:= ADR(VAL_STRING2), pstTo:= ADR(xText_Write), iBufferSize:= 10000);&lt;br/&gt;
            IF LOOP &amp;lt; 5008 THEN StrConcatA(pstFrom:= ADR(txt_Virg), pstTo:= ADR(xText_Write), iBufferSize:= 10000); END_IF;&lt;br/&gt;
            TAM_STR := LEN(xText_Write);&lt;br/&gt;
            IF TAM_STR &amp;gt;= 200 THEN&lt;br/&gt;
                IF hFile &amp;lt;&amp;gt; RTS_INVALID_HANDLE THEN&lt;br/&gt;
                    udiWrite:= SysFileWrite(hFile:= hFile, pbyBuffer:= ADR(xText_Write), ulSize:= INT_TO_UDINT(LEN(xText_Write)), pResult:= ADR(udiWriteError1));&lt;br/&gt;
                    xText_Write := '';&lt;br/&gt;
                END_IF&lt;br/&gt;
            END_IF&lt;br/&gt;
        END_FOR;&lt;br/&gt;
    END_FOR;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;MESCR&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="nt"&gt;GVL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ESCO&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="nt"&gt;SSALV&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;Date_Time&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;xExecute&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


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