FLProg + Nextion HMI mejorado



ITEAD lanza una nueva línea mejorada de sus paneles Nextion HMI Los representantes de la compañía me proporcionaron una copia de esta línea para integrar nuevas funciones del panel en el programa FLProg. En la versión 2.2, esto fue implementado. En esta lección, consideraremos las nuevas características del panel y, por ejemplo, crearemos un temporizador programable para cinco canales.

Para comenzar, considere las características del panel. La línea mejorada tiene un reloj de tiempo real incorporado, 1024 bytes de memoria no volátil, 8 entradas / salidas digitales. Cada uno de ellos se puede configurar como entrada o como salida. Cuatro de ellos (del 4 al 7) se pueden configurar como salidas PWM.



Además de la línea Nextion HMI Enhanced, también se lanzó la tarjeta de expansión, que



tiene controles y pantallas conectadas al panel GPIO.



Tales oportunidades permiten hacer un dispositivo casi completo basado en este panel. En esta lección, me enfocaré en programar el panel en sí, ya que hay poca información sobre este tema, pero hay muchas trampas. Al final de la publicación hay un enlace al proyecto para el programa Nextion Editor.

Primeros pasos con el editor Nextion Editor, su puesta en marcha, la elección inicial de codificación, tales como el panel se discutió en mis mensajes anteriores tyts , tyts y tyts . Por lo tanto, no nos detendremos en esto.
El programa consta de tres pantallas del panel principal ( Main ), Ajuste del temporizador ( el SetTimer ) y la hora ( SetCurrentTime ).

Comencemos desde la pantalla principal.



Esta pantalla muestra la configuración para encender, apagar, el estado de cada canal, el botón para cambiar el estado de los canales y el botón para cambiar a la pantalla para configurar la hora actual. Cuando haces clic en el texto que muestra la configuración del canal, vas a la configuración de este canal. Además, en esta pantalla hay cuatro botones ocultos necesarios para unirse a los botones físicos ubicados en la Tarjeta de expansión. .



Considere el código contenido en la pantalla principal.

Evento Preinitialilize el evento (la pantalla se denomina antes de la inicialización).

cfgpio 0,1,b0 //  Esc (IO0)     b0 " "
cfgpio 2,1,b8 //  Right (IO2)     b8 -"  "
cfgpio 3,1,b7 //  Down (IO3)     b7 -"   "
cfgpio 4,1,b6 //  Up (IO4)     b6 -"   "
cfgpio 5,1,b9 //  Left (IO5)     b9 -"  "
SelTim.val=1 //   

Aquí vinculamos los botones físicos ubicados en la Tarjeta de expansión a los botones virtuales en la pantalla.

Más información sobre el comando cfgpio: configuración de entradas y salidas físicas del panel (solo los paneles mejorados tienen este comando).
:
cfgpio id,state,cmp
:
id: / (0-7)
state: (0-4)
cmp: ( 1, — 0).
. cfgpio .

:
0+ 5 ( 50 ). pio0 – pio7 ( 0- 7 /cfgpio 0,0,0
/ GPIO0 , +5. :
n0.val = pio0
1+ 5 ( 50 ) . pio0 – pio7 ( 0- 7 / ). . 1 , . 0 . Preinitialilize Event , , .cfgpio 2,1,b0
/ GPIO2 , +5 b0.
, b0 , – .
2. pio0 – pio7 ( 0- 7 / ).cfgpio 1,2,0
/ GPIO1 . :
pio1=1
3. 4-7 /. 0 100. – 50. pwm4- pwm7 ( 4- 7 / ). pwmf . 1 65536. – 1000.cfgpio 4,3,0
/ GPIO4 .
:
pwm4=20
– 2000 .
pwmf=2000
4. pio0 – pio7 ( 0- 7 / ).cfgpio 5,4,0
/ GPIO5 . :
pio5=1


Caso del tacto de prensa Evento botón b0 - «Establecer hora»

page 2 //      

Es todo explica por sí mismo

evento táctil evento para la prensa botones B1 - Estado «interruptor del primer canal"

repo TempB.val,0 //   EEPROM   TempB   1
if(TempB.val==1) //    -   
{
  if(tsr1.val==1)//   
  {
    tsr1.val=2 //  
  }else
  {
    tsr1.val=1 //  - 
  }
}

Primero leemos la actividad del canal de la EEPROM. Cada canal se puede desactivar desde el trabajo en la página de configuración del canal. El comando repo "lectura de EEPROM" se analizará con más detalle a continuación. Luego, si el canal está activo, cambie su estado. El estado actual de los canales se almacena en las variables tsr1 - tsr5 para cada uno de los canales, respectivamente.

Características en la sintaxis de la expresión if else
if(TempB.val==1) – .
. .
}else
, . , else , .

Para los botones restantes para cambiar el estado del canal ( b2 - b5 ), el código de evento Touch Press es el mismo. Solo se cambia la dirección en la EEPROM y la variable de estado del canal.

Caso del tacto de prensa Evento botón b6 - «elegir el programa anterior ". El botón es invisible. Modo de representación ( sta ): imagen recortada (imagen recortada). Como imagen en estado no presionado ( picc ) y en estado presionado ( picc2 ), se selecciona la imagen de fondo de la ventana. Debido a esto, el botón no se muestra, pero funciona. Este botón en esta pantalla está vinculado al botón físico Arriba (IO4) en la Tarjeta de expansión .

if(SelTim.val<2)//   1
{
  SelTim.val=5 //   5
}else
{
  SelTim.val=SelTim.val-1 //     
}

La variable SelTim contiene el número del temporizador seleccionado actualmente. Todo lo demás, creo, está claro por los comentarios. Caso del tacto de prensa Evento botón B7 - «para seleccionar el siguiente canal ". El botón es invisible. Este botón en esta pantalla está vinculado al botón físico Down (IO3) en la tarjeta de expansión .



if(SelTim.val>4) //    5
{
  SelTim.val=1 //    1
}else
{
  SelTim.val=SelTim.val+1 //    
}

Aquí creo que lo mismo está claro.

Caso del tacto de prensa Evento botón B8 - «Editar el canal seleccionado ". El botón es invisible. Este botón en esta pantalla está vinculado al botón físico derecho (IO2) en la placa de expansión .

if(SelTim.val==1) //    1
{
  click TimerText1,1 //         1
}
if(SelTim.val==2) //    2
{
  click TimerText2,1 //         2
}
if(SelTim.val==3) //    3
{
  click TimerText3,1 //         3
}
if(SelTim.val==4) //    4
{
  click TimerText4,1 //         4
}
if(SelTim.val==5) //    5
{
  click TimerText5,1 //         1
}

Haga clic en detalles del comando: simule hacer clic o soltar un elemento
:
click cmpID,event
:
cmpID: ID .
event: 0 – ; 1 –
. click .

Caso del tacto de prensa Evento botón B9 - «estado de conmutación del canal seleccionado ". El botón es invisible. Este botón en esta pantalla está vinculado al botón físico izquierdo (IO5) en la placa de expansión .

if(SelTim.val==1) //    1
{
  click b1,1 //     b1
}
if(SelTim.val==2) //    2
{
  click b2,1 //     b2
}
if(SelTim.val==3) //    3
{
  click b3,1 //     b3
}
if(SelTim.val==4) //    4
{
  click b4,1 //     b4
}
if(SelTim.val==5) //    5
{
  click b5,1 //     b5
}

El evento Touch Press del cuadro de texto TimerText1 es "Mostrar estado del canal 1".

sys0=1 //     sys0   
sys1=1 //     sys1       
page 1 //      (SetTimer - ID = 1).

Para otros campos de texto ( TimerText2 - TimerText5 ), el código del evento Touch Press es el mismo. Solo en la variable de sistema sys0 se ingresa el número de canal correspondiente.

sys0, sys1, sys2 son variables numéricas globales que no necesitan ser creadas o definidas. Se pueden usar en cualquier pantalla. El valor predeterminado para estas tres variables es 0, se pueden leer y escribir, su rango de valores es 0 ~ 4294967295. Recomendado para pasar valores entre páginas.

El temporizador tm0 se configura en esta pantalla . Este temporizador se activa cada 200 milisegundos (parámetro tim), cuando la página está activa. El código para monitorear el estado de los temporizadores y volver a dibujar los componentes en la página se encuentra en el Evento de temporizador de este temporizador.

Código bajo spoler
//     CurrentTime1
//----  ----
temp.val=rtc2 //        rtc2 - "    "
tempText.txt="" //     tempText   
if(temp.val<10)//    10
{
 tempText.txt="0" //      tempText   "0"
}
cov temp.val,TT1.txt,0 //    ()       TT1
CurrentTime1.txt=tempText.txt+TT1.txt //    tempText  TT1     CurrentTime1
//----  ----
temp.val=rtc1 //        rtc1 - "    "
tempText.txt="" //     tempText   
if(temp.val<10) //    10
{
 tempText.txt="0" //      tempText   "0"
}
cov temp.val,TT1.txt,0 //    ()       TT1
CurrentTime1.txt=CurrentTime1.txt+"-"+tempText.txt+TT1.txt //      CurrentTime1    "-"     tempText  TT1
//----  ----
temp.val=rtc0 //        rtc0 - "    "
cov temp.val,TT1.txt,0 //    ()       TT1
CurrentTime1.txt=CurrentTime1.txt+"-"+TT1.txt //      CurrentTime1    "-"     TT1
//----  ----
temp.val=rtc3 //        rtc3 - "    "
tempText.txt="" //     tempText   
if(temp.val<10) //    10
{
 tempText.txt="0" //      tempText   "0"
}
cov temp.val,TT1.txt,0 //    ()       TT1
CurrentTime1.txt=CurrentTime1.txt+" "+tempText.txt+TT1.txt //      CurrentTime1      " "     tempText  TT1
//----  ----
temp.val=rtc4 //        rtc4 - "    "
tempText.txt="" //     tempText   
if(temp.val<10) //    10
{
 tempText.txt="0"//      tempText   "0"
}
cov temp.val,TT1.txt,0 //    ()       TT1
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt //      CurrentTime1    ":"     tempText  TT1
//----  ----
temp.val=rtc5 //        rtc5 - "    "
tempText.txt="" //     tempText   
if(temp.val<10) //    10
{
 tempText.txt="0" //      tempText   "0"
}
cov temp.val,TT1.txt,0 //    ()       TT1
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt //      CurrentTime1    ":"     tempText  TT1
//       / 
for(i.val=0;i.val<5;i.val++)// .   i     (  )
{
  temp.val=i.val*52 //     EEPROM   
 // ----  ----
  temp2.val=temp.val+4 //    EEPROM    
 Var0txt.txt=""//    Var0txt   
  repo temp1.val,temp2.val //   EEPROM   temp1.val    
  if(temp1.val==10000) //      ( 10000)
  {
    ts1.val=1 //       
  tempText.txt="X" //    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc2) //      
    {
      ts1.val=1 //      ts1
    }else // 
    {
      ts1.val=2 //       ts1
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
    if(temp1.val<10)//E       10
    {
    Var0txt.txt="0" //    Var0txt   "0"
    }
  }
  TT1.txt=Var0txt.txt+tempText.txt+"-"//   TT1    Var0txt, tempText    "-"
 // ----  ----
  temp2.val=temp.val+8 //    EEPROM    
 Var0txt.txt="" //    Var0txt   
  repo temp1.val,temp2.val //   EEPROM   temp1.val    
  if(temp1.val==10000)//      ( 10000)
  {
    ts2.val=1 //       
  tempText.txt="X"//    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc1)//     
    {
      ts2.val=1 //      ts2
    }else // 
    {
      ts2.val=2 //       ts2
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
    if(temp1.val<10) // E       10
    {
    Var0txt.txt="0" //    Var0txt   "0"
    }
  }
  TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+"-" //     TT1    Var0txt, tempText    "-"
 // ----  ----
  temp2.val=temp.val+12 //    EEPROM    
  repo temp1.val,temp2.val//   EEPROM   temp1.val    
  if(temp1.val==10000) //      ( 10000)
  {
    ts3.val=1 //       
  tempText.txt="X"//    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc0) //      
    {
      ts3.val=1 //      ts3
    }else // 
    {
      ts3.val=0 //       ts3
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
  }
  TT1.txt=TT1.txt+tempText.txt+" " //     TT1    tempText      " "
 // ----  ----
  temp2.val=temp.val+16 //    EEPROM    
 Var0txt.txt="" //    Var0txt   
  repo temp1.val,temp2.val //   EEPROM   temp1.val    
  if(temp1.val==10000)//      ( 10000)
  {
    ts4.val=1 //       
  tempText.txt="X" //    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc3) //      
    {
      ts4.val=1 //      ts4
    }else // 
    {
      ts4.val=0 //       ts4
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
    if(temp1.val<10) // E       10
    {
    Var0txt.txt="0" //    Var0txt   "0"
    }
  }
  TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":" //     TT1    Var0txt, tempText    ":"
 // ----  ----
  temp2.val=temp.val+20 //    EEPROM    
 Var0txt.txt="" //    Var0txt   
  repo temp1.val,temp2.val //   EEPROM   temp1.val    
  if(temp1.val==10000)//      ( 10000)
  {
    ts5.val=1 //       
  tempText.txt="X" //    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc4) //      
    {
      ts5.val=1//     ts5
    }else // 
    {
      ts5.val=0 //       ts5
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
    if(temp1.val<10) // E       10
    {
    Var0txt.txt="0"//   Var0txt   "0"
    }
  }
  TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":"//    TT1    Var0txt, tempText    ":"
 // ----  ----
  temp2.val=temp.val+24 //    EEPROM    
 Var0txt.txt="" //    Var0txt   
  repo temp1.val,temp2.val //   EEPROM   temp1.val    
  if(temp1.val==10000) //      ( 10000)
  {
    ts6.val=1 //       
  tempText.txt="X" //    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc5) //      
    {
      ts6.val=1 //      ts6
    }else // 
    {
      ts6.val=0 //       ts6
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
    if(temp1.val<10) // E       10
    {
    Var0txt.txt="0" //    Var0txt   "0"
    }
  }
  TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+" / " //     TT1    Var0txt, tempText       "/"
 // ----  ----
  temp2.val=temp.val+28 //    EEPROM    
 Var0txt.txt="" //    Var0txt   
  repo temp1.val,temp2.val //   EEPROM   temp1.val    
  if(temp1.val==10000) //      ( 10000)
  {
    ts7.val=1 //       
  tempText.txt="X" //    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc2) //      
    {
      ts7.val=1 //      ts7
    }else // 
    {
      ts7.val=0 //       ts7
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
    if(temp1.val<10)//E       10
    {
    Var0txt.txt="0"//   Var0txt   "0"
    }
  }
  TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+"-" //     TT1    Var0txt, tempText    "-"
 // ----  ----
  temp2.val=temp.val+32 //    EEPROM    
 Var0txt.txt="" //    Var0txt   
  repo temp1.val,temp2.val//   EEPROM   temp1.val    
  if(temp1.val==10000)//      ( 10000)
  {
    ts8.val=1//      
  tempText.txt="X" //    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc1) //      
    {
      ts8.val=1 //      ts8
    }else // 
    {
      ts8.val=0 //       ts8
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
    if(temp1.val<10) // E       10
    {
    Var0txt.txt="0"//   Var0txt   "0"
    }
  }
  TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+"-"//    TT1    Var0txt, tempText    "-"
 // ----  ----
  temp2.val=temp.val+36 //    EEPROM    
  repo temp1.val,temp2.val //   EEPROM   temp1.val    
  if(temp1.val==10000)//      ( 10000)
  {
    ts9.val=1 //       
  tempText.txt="X" //    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc0) //      
    {
      ts9.val=1 //      ts9
    }else // 
    {
      ts9.val=0 //       ts9
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
  }
  TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+" " //     TT1    tempText      " "
 // ----  ----
  temp2.val=temp.val+40 //    EEPROM    
 Var0txt.txt="" //    Var0txt   
  repo temp1.val,temp2.val //   EEPROM   temp1.val    
  if(temp1.val==10000) //      ( 10000)
  {
    ts10.val=1//      
  tempText.txt="X" //    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc3) //      
    {
      ts10.val=1 //      ts10
    }else // 
    {
      ts10.val=0 //       ts10
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
    if(temp1.val<10) // E       10
    {
    Var0txt.txt="0" //    Var0txt   "0"
    }
  }
  TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":"//    TT1    Var0txt, tempText    ":"
 // ----  ----
  temp2.val=temp.val+44 //    EEPROM    
 Var0txt.txt="" //    Var0txt   
  repo temp1.val,temp2.val //   EEPROM   temp1.val    
  if(temp1.val==10000) //      ( 10000)
  {
    ts11.val=1 //       
  tempText.txt="X" //    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc4) //      
    {
      ts11.val=1 //      ts11
    }else // 
    {
      ts11.val=0 //       ts11
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
    if(temp1.val<10) // E       10
    {
    Var0txt.txt="0"//   Var0txt   "0"
    }
  }
  TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":" //     TT1    Var0txt, tempText    ":"
 // ----  ----
  temp2.val=temp.val+48 //    EEPROM    
 Var0txt.txt="" //    Var0txt   
  repo temp1.val,temp2.val //   EEPROM   temp1.val    
  if(temp1.val==10000) //      ( 10000)
  {
    ts12.val=1 //       
  tempText.txt="X" //    tempText     "X"
  }else // 
  {
    if(temp1.val==rtc5) //      
    {
      ts12.val=1 //      ts12
    }else // 
    {
      ts12.val=0 //       ts12
    }
    cov temp1.val,tempText.txt,0 //      ( )    tempText
    if(temp1.val<10) // E       10
    {
    Var0txt.txt="0" //    Var0txt   "0"
    }
  }
  TT1.txt=TT1.txt+Var0txt.txt+tempText.txt //     TT1    Var0txt, tempText
 // ----  ----
  repo temp1.val,temp.val //   EEPROM   temp1.val   
  tsrOn.val=0 //   tsrOn (  )  0 ( )
  if(temp1.val==1)//   
  {
    if(ts1.val==1)//     
    {
      if(ts2.val==1)//     
      {
        if(ts3.val==1)//     
        {
          if(ts4.val==1)//     
          {
            if(ts5.val==1)//     
            {
              if(ts6.val==1)//     
              {
                tsrOn.val=1//  tsrOn (  )  1 ( )
              }
            }
          }
        }
      }
    }
  }
 // ----  ----
  tsrOf.val=0 //   tsrOf (  )  0 ( )
  if(temp1.val==1)//   
  {
    if(ts7.val==1)//     
    {
      if(ts8.val==1)//     
      {
        if(ts9.val==1)//     
        {
          if(ts10.val==1)//     
          {
            if(ts11.val==1)//     
            {
              if(ts12.val==1)//     
              {
                tsrOf.val=1//  tsrOf (  )  1 (  )
              }
            }
          }
        }
      }
    }
  }else//
  {
    tsrOf.val=1//  tsrOf (  )  1 (  )
  }
 // ----    1----
  if(i.val==0)//    1
  {
    if(tsr1.val==1)//    -  (  1 -  tsr1)
    {
      if(tsrOf.val==1)//     
      {
        tsr1.val=2 //      
      }
    }else //  (    )
    {
      if(tsrOn.val==1) //     
      {
        tsr1.val=1 //       
      }
    }
    if(tsr1.val==1)//    -  (  1 -  tsr1)
    {
      TimerText1.pco=63488//   TimerText1    -  
    }else // 
    {
      if(temp1.val==1) //   
      {
        TimerText1.pco=65504 //   TimerText1    - 
      }else // (   )
      {
        TimerText1.pco=50712 //   TimerText1    - 
      }
    }
    TimerText1.txt=TT1.txt //    TimerText1        TT1
  }
  // ----    2----
  if(i.val==1) //    2
  {
    if(tsr2.val==1)//    -  (  2 -  tsr2)
    {
      if(tsrOf.val==1)//     
      {
        tsr2.val=2 //      
      }
    }else //  (    )
    {
      if(tsrOn.val==1)//     
      {
        tsr2.val=1 //       
      }
    }
    if(tsr2.val==1)//    -  (  2 -  tsr2)
    {
     TimerText2.pco=63488//   TimerText2    -  
    }else // 
    {
      if(temp1.val==1) //   
      {
       TimerText2.pco=65504 //   TimerText2    - 
      }else // (   )
      {
       TimerText2.pco=50712 //   TimerText2    - 
      }
    }
   TimerText2.txt=TT1.txt //    TimerText2        TT1
  }
 // ----    3----
  if(i.val==2) //    3
  {
    if(tsr3.val==1)//    -  (  3 -  tsr3)
    {
      if(tsrOf.val==1)//     
      {
        tsr3.val=2 //      
      }
    }else //  (    )
    {
      if(tsrOn.val==1)//     
      {
        tsr3.val=1 //       
      }
    }
    if(tsr3.val==1)//    -  (  3 -  tsr3)
    {
      TimerText3.pco=63488 //   TimerText3    -  
    }else // 
    {
      if(temp1.val==1) //   
      {
        TimerText3.pco=65504 //   TimerText3    - 
      }else // (   )
      {
        TimerText3.pco=50712//   TimerText3    - 
      }
    }
    TimerText3.txt=TT1.txt //    TimerText3        TT1
  }
 // ----    4----
  if(i.val==3) //    4
  {
    if(tsr4.val==1)//    -  (  4 -  tsr4)
    {
      if(tsrOf.val==1)//     
      {
        tsr4.val=2//     
      }
    }else //  (    )
    {
      if(tsrOn.val==1)//     
      {
        tsr4.val=1//      
      }
    }
    if(tsr4.val==1)//    -  (  4 -  tsr4)
    {
     TimerText4.pco=63488 //   TimerText4    -  
    }else//
    {
      if(temp1.val==1)//   
      {
       TimerText4.pco=65504 //   TimerText4    - 
      }else // (   )
      {
       TimerText4.pco=50712//   TimerText4    - 
      }
    }
   TimerText4.txt=TT1.txt //    TimerText4        TT1
  }
 // ----    5----
  if(i.val==4) //    5
  {
    if(tsr5.val==1)//    -  (  5 -  tsr5)
    {
      if(tsrOf.val==1)//     
      {
        tsr5.val=2//     
      }
    }else //  (    )
    {
      if(tsrOn.val==1)//     
      {
        tsr5.val=1 //       
      }
    }
    if(tsr5.val==1)//    -  (  5 -  tsr5)
    {
     TimerText5.pco=63488 //   TimerText5    -  
    }else // 
    {
      if(temp1.val==1)//   
      {
       TimerText5.pco=65504 //   TimerText5    - 
      }else // (   )
      {
       TimerText5.pco=50712 //   TimerText5    - 
      }
    }
   TimerText5.txt=TT1.txt //    TimerText5        TT1
  }
}
//   
if(SelTim.val==1) //    1 ( SelTim)
{
  b1.txt="+" //      1 (b1)  "+"
}else // 
{
  b1.txt="" //      1 (b1)  "+"
}
if(SelTim.val==2) //    2 ( SelTim)
{
  b2.txt="+" //      2 (b2)  "+"
}else//
{
  b2.txt="" //      2 (b2)  "+"
}
if(SelTim.val==3)//   3 ( SelTim)
{
  b3.txt="+" //      3 (b3)  "+"
}else//
{
  b3.txt="" //      3 (b3)  "+"
}
if(SelTim.val==4)//   4 ( SelTim)
{
  b4.txt="+" //      4 (b4)  "+"
}else//
{
  b4.txt="" //      4 (b4)  "+"
}
if(SelTim.val==5)//   5 ( SelTim)
{
  b5.txt="+" //      5 (b5)  "+"
}else//
{
  b5.txt="" //      5 (b5)  "+"
}


Características en la sintaxis de una expresión for
for(n0.val=0; n0.val<100; n0.val++) — .
. .

Lea más sobre el comando cov: conversión entre cadenas y datos numéricos.
:
cov att1,att2,lenth
:
att1:
att2:
lenth: ( 0 – )
:
cov number.val,text.txt,0
number text.
cov text.txt,number.val,5
text.
. cov .

Considere la ubicación de los datos en el panel EEPROM. A cada canal se le asignan 52 bytes. Para cada valor - 4 bytes.
Dirección EEPROM
Offset de inicio = (número de canal que comienza en 0) * 52
Valor
Iniciar desplazamientoActividad del canal (0 - canal deshabilitado, 1 - canal habilitado)
Comienzo offset + 4Día de inclusión del canal. Si no se tiene en cuenta - 10,000
Compensación inicial + 8Mes de inclusión del canal. Si no se tiene en cuenta - 10,000
Compensación inicial + 12. — 10000
+ 16. — 10000
+ 20. -10000
+ 24. – 10000
+ 28. — 10000
+ 32. – 10000
+ 36. -10000
+ 40. -10000
+ 44. -10000
+ 48Canal apagado segundo. Si no se tiene en cuenta -10000

Desde la pantalla principal de haber terminado, pasar a la pantalla, el ajuste del temporizador ( el SetTimer ID = 1 )



Evento Preinitialilize el evento (la pantalla se denomina antes de la inicialización).

cfgpio 0,1,b2 //  Esc (IO0)     b2 ( "/ "  "" ( 2 ))
cfgpio 1,1,BYE //  Enter (IO1)     BYE ("/O   "  )
cfgpio 2,1,b0 //  Right (IO2)     b0 -"   "
cfgpio 3,1,BYM //  Down (IO3)     BYM -"    "
cfgpio 4,1,BYP //  Up (IO4)     BYP -"    "
cfgpio 5,1,b1 //  Left (IO5)     b1 -"   "
StAddr.val=sys0-1 //        0
StAddr.val=StAddr.val*52 //       EEPROM
repo Enable.val,StAddr.val //   Enable    EEPROM  

Aquí redefinimos la unión de los botones físicos ubicados en la Tarjeta de expansión a las necesidades de esta pantalla y leemos previamente los datos.

Caso del tacto de prensa Evento botón b0 - «Ir al siguiente campo ". El botón es invisible. Este botón en esta pantalla está vinculado al botón físico derecho (IO2) en la placa de expansión .

if(sys1>11) //    12 (  )
{
  sys1=1 //   1 (   )
}else // 
{
  sys1=sys1+1 //    
}

Caso del tacto de prensa Evento botones B1 - «Ir al campo anterior ". El botón es invisible. Este botón en esta pantalla está vinculado al botón físico izquierdo (IO5) en la placa de expansión .

if(sys1<2) //    1 (   )
{
  sys1=12 //   12 (  )
}else // 
{
  sys1=sys1-1 //    
}

Caso del tacto de prensa Evento botón b2 - "canal Activar / Desactivar" o "Salir" (retención de 2 segundos). El botón es invisible. Este botón en esta pantalla está vinculado al botón físico Esc (IO0) en la tarjeta de expansión.

tm1.en=1 //   tm1

Aquí comenzamos el temporizador auxiliar. Si pulsa el botón físico Esc (IO0) en la placa de expansión durante 2 segundos (propiedad tim temporizador), la reducción suceda temporizador (evento llamado evento de temporizador del temporizador TM1 ), si se suelta el botón antes del evento se debe táctil de lanzamiento Evento botón b2

tm1.en=0 // C    tm1
if(Enable.val==1) //     Enable ("/ ") 
{
  Enable.val=0 //      
}else // 
{
  Enable.val=1 //     
}

Evento evento de temporizador del temporizador TM1

click b11,1 //      b11 ("")

Caso del tacto de prensa Evento botón de una semana de descanso - «Activar / Desactivar registro en la operación" del campo seleccionado.

if(sys1==1) //    1(  )
{
  temp2.val=rtc2 //            
}
if(sys1==2) //    2(  )
{
  temp2.val=rtc1 //            
}
if(sys1==3) //    3(  )
{
  temp2.val=rtc0 //            
}
if(sys1==4) //    4 (  )
{
  temp2.val=rtc3 //            
}
if(sys1==5) //    5 (  )
{
  temp2.val=rtc4 //            
}
if(sys1==6) //    6 (  )
{
  temp2.val=rtc5 //            
}
if(sys1==7) //    7 (  )
{
  temp2.val=rtc2 //            
}
if(sys1==8) //    8 (  )
{
  temp2.val=rtc1 //            
}
if(sys1==9) //    9 (  )
{
  temp2.val=rtc0 //            
}
if(sys1==10)//    10 (  )
{
  temp2.val=rtc3 //            
}
if(sys1==11) //    11 (  )
{
  temp2.val=rtc4 //            
}
if(sys1==12) //    12 (  )
{
  temp2.val=rtc5 //            
}
temp3.val=sys1*4 //     EEPROM    
temp.val=StAddr.val+temp3.val//     EEPROM    
repo temp1.val,temp.val //         temp1
if(temp1.val==10000)//       (  10000)
{
  temp1.val=temp2.val //    temp1      (     )
}else //  (    )
{
  temp1.val=10000 //    temp1  10000 (     )
}
wepo temp1.val,temp.val//C    EEPROM

Lea más sobre los comandos wepo - escriba en EEPROM y repo - lea desde EEPROM (solo los paneles mejorados tienen estos comandos).
wepo
:
wepo att,add
:
att:
add: EEPROM
:
wepo number.val,10
number EEPROM 10. EEPROM 0. . wepo .

repo
:
repo att,add
:
att:
add: EEPROM
:
repo number.val,10
number EEPROM , 10. , 4 , . – txt_maxl att +1
. repo .

Caso del tacto de prensa Evento botón EXC - «Añadir 1 al campo seleccionado ".

if(sys1==1) //    1(  )
{
  temp2.val=31 //    temp2      1 - 31
}
if(sys1==2)//    2(  )
{
  temp2.val=12 //    temp2      2 - 12
}
if(sys1==3) //    3 (  )
{
  temp2.val=9999 //    temp2      2 - 9999
}
if(sys1==4) //    4 (  )
{
  temp2.val=23 //    temp2      4 - 23
}
if(sys1==5) //    5 (  )
{
  temp2.val=59 //    temp2      5 - 59
}
if(sys1==6) //    6 (  )
{
  temp2.val=59 //    temp2      6 - 59
}
if(sys1==7)//    7 (  )
{
  temp2.val=31 //    temp2      7 - 31
}
if(sys1==8) //    8 (  )
{
  temp2.val=12 //    temp2      8 - 12
}
if(sys1==9) //    9 (  )
{
  temp2.val=9999 //    temp2      9 - 9999
}
if(sys1==10) //    10 (  )
{
  temp2.val=23 //    temp2      10 - 23
}
if(sys1==11) //    11 (  )
{
  temp2.val=59 //    temp2      11 - 59
}
if(sys1==12) //    12 (  )
{
  temp2.val=59 //    temp2      12 - 59
}
temp3.val=sys1*4 //     EEPROM    
temp.val=StAddr.val+temp3.val //     EEPROM    
repo temp1.val,temp.val //         temp1
if(temp1.val!=10000)//      (   10000)
{
  if(temp1.val!=temp2.val)//         
  {
    temp1.val=temp1.val+1 //    
    wepo temp1.val,temp.val // C    EEPROM
  }
}

Caso del tacto de prensa Evento botón BYM - «Reste 1 del campo elegido ".

temp2.val=0 //    temp2     4, 5, 6,10,11,12 - 0
if(sys1==1)//    1(  )
{
  temp2.val=1 //    temp2      1 - 1
}
if(sys1==2)//    2(  )
{
  temp2.val=1 //    temp2      2 - 1
}
if(sys1==3)//    3(  )
{
  temp2.val=2016 //    temp2      3 - 2016
}
if(sys1==7) //    7(  )
{
  temp2.val=1 //    temp2      7 - 1
}
if(sys1==8) //    8(  )
{
  temp2.val=1 //    temp2      8 - 1
}
if(sys1==9) //    9(  )
{
  temp2.val=2016 //    temp2      9 - 2016
}
temp3.val=sys1*4//    EEPROM    
temp.val=StAddr.val+temp3.val //     EEPROM    
repo temp1.val,temp.val //         temp1
if(temp1.val!=10000) //       (   10000)
{
  if(temp1.val!=temp2.val)//         
  {
    temp1.val=temp1.val-1 //    
    wepo temp1.val,temp.val // C    EEPROM
  }
}

Caso del tacto de prensa Evento botón B11 - «Volver a la página principal ".

wepo Enable.val,StAddr.val//   EEPROM   
sys0=0 //    sys0 
sys1=0 //    sys1 
page 0 //    

El evento Touch Press del cuadro de texto StartD es " Disparador del punto de ajuste del día".

sys1=1 //   1

Para los campos de texto con otras configuraciones, el código del evento Touch Press es el mismo, excepto el número de campo.

Los números de los campos de valores de configuración son:

StartMo - 2 ("Mes del punto de ajuste de la operación").
StartY - 3 ("Año del viaje del punto de ajuste").
StartH - 4 ("Hora del ajuste de la operación").
StartMi - 5 (" Punto de ajuste de minutos de operación").
StartS - 6 ("Segundo punto de ajuste de la operación").
StopD - 7 (“Configuración del día del viaje”).
StopMo - 8 ("Configuración del mes del viaje").
StopY - 9 ("Configuración del año del viaje").
Parada H - 10 ("Configuración de la hora del viaje").
Stopmi- 11 (“Configuración de viaje de minutos„).
Paradas - 12 ("Segundos del punto de ajuste de disparo").

El temporizador tm0 también se configura en esta pantalla con un período de disparo de 200 milisegundos. En el evento de temporizador de este temporizador, los valores de los campos de configuración se actualizan.

Código bajo el spoiler

//  1 - (  )
temp1.val=StAddr.val+4 // O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10)//     10 
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==1)//     1
  {
    vis BYP,0 //   " "
    vis BYM,0 //   " "
  }
  StartD.txt="X"//     ""
}else //  (      (   10000))
{
  if(sys1==1) //     1
  {
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StartD.txt=tempStr1.txt //        tempStr1
}
//  2 - (  )
temp1.val=StAddr.val+8 // O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10)//     10 
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==2) //     2
  {
    vis BYP,0//  " "
    vis BYM,0 //   " "
  }
  StartMo.txt="X" //     ""
}else //  (      (   10000))
{
  if(sys1==2) //     2
  {
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StartMo.txt=tempStr1.txt //        tempStr1
}
//  3 - (  )
temp1.val=StAddr.val+12 // O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10) //     10 
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==3) //     3
  {
    vis BYP,0 //   " "
    vis BYM,0 //   " "
  }
  StartY.txt="X" //     ""
}else //  (      (   10000))
{
  if(sys1==3) //     3
  {
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StartY.txt=tempStr1.txt //        tempStr1
}
//  4 - (  )
temp1.val=StAddr.val+16 // O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10) //     10 
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==4) //     4
  {
    vis BYP,0 //   " "
    vis BYM,0 //   " "
  }
  StartH.txt="X" //     ""
}else //  (      (   10000))
{
  if(sys1==4) //     3
  {
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StartH.txt=tempStr1.txt //        tempStr1
}
//  5 - (  )
temp1.val=StAddr.val+20 // O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10) //     10 
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==5) //     5
  {
    vis BYP,0 //   " "
    vis BYM,0 //   " "
  }
  StartMi.txt="X" //     ""
}else //  (      (   10000))
{
  if(sys1==5) //     5
  {
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StartMi.txt=tempStr1.txt //        tempStr1
}
//  6 - (  )
temp1.val=StAddr.val+24 // O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10) //     10
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==6) //     6
  {
    vis BYP,0 //   " "
    vis BYM,0 //   " "
  }
  StartS.txt="X" //     ""
}else// (      (   10000))
{
  if(sys1==6) //     6
  {
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StartS.txt=tempStr1.txt //        tempStr1
}
//  7 - (  )
temp1.val=StAddr.val+28// O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10) //     10
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==7) //     7
  {
    vis BYP,0 //   " "
    vis BYM,0 //   " "
  }
  StopD.txt="X" //     ""
}else //  (      (   10000))
{
  if(sys1==7) //     7
  {
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StopD.txt=tempStr1.txt //        tempStr1
}
//  8 - (  )
temp1.val=StAddr.val+32 // O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10) //     10
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==8) //     8
  {
    vis BYP,0 //   " "
    vis BYM,0 //   " "
  }
  StopMo.txt="X" //     ""
}else //  (      (   10000))
{
  if(sys1==8) //     8
  {
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StopMo.txt=tempStr1.txt //        tempStr1
}
//  9 - (  )
temp1.val=StAddr.val+36 // O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10) //     10
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==9) //     9
  {
    vis BYP,0 //   " "
    vis BYM,0 //   " "
  }
  StopY.txt="X" //     ""
}else //  (      (   10000))
{
  if(sys1==9) //     9
  { 
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StopY.txt=tempStr1.txt //        tempStr1
}
//  10 - (  )
temp1.val=StAddr.val+40 // O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10) //     10
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==10) //     10
  {
    vis BYP,0 //   " "
    vis BYM,0 //   " "
  }
  StopH.txt="X" //     ""
}else //  (      (   10000))
{
  if(sys1==10) //     10
  {
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StopH.txt=tempStr1.txt //        tempStr1
}
//  11 - (  )
temp1.val=StAddr.val+44 // O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10) //     10
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==11) //     11
  {
    vis BYP,0 //   " "
    vis BYM,0 //   " "
  }
  StopMi.txt="X" //     ""
}else //  (      (   10000))
{
  if(sys1==11) //     11
  {
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StopMi.txt=tempStr1.txt //        tempStr1
}
//  12 - (  )
temp1.val=StAddr.val+48 // O   EEPROM   
repo temp.val,temp1.val //   temp   EEPROM   
cov temp.val,tempStr.txt,0 //      temp      tempStr
if(temp.val<10) //     10
{
  tempStr1.txt="0"+tempStr.txt //     tempStr1     ( tempStr)     "0"
}else // 
{
  tempStr1.txt=tempStr.txt //    tempStr1      ( tempStr)
}
if(temp.val==10000) //         ( = 10000)
{
  if(sys1==12) //     12
  {
    vis BYP,0 //   " "
    vis BYM,0 //   " "
  }
  StopS.txt="X" //     ""
}else //  (      (   10000))
{
  if(sys1==12) //     12
  {
    vis BYP,1 //   " "
    vis BYM,1 //   " "
  }
  StopS.txt=tempStr1.txt //        tempStr1
}
//  
if(sys1==1) //    1 - (  )
{
  StartD.pco=63488 //  1   - 
}else // 
{
  StartD.pco=65535 //  1   - 
}
if(sys1==2) //    2 - (  )
{
  StartMo.pco=63488 //  2   - 
}else // 
{
  StartMo.pco=65535 //  2   - 
}
if(sys1==3) //    3 - (  )
{
  StartY.pco=63488 //  3   - 
}else // 
{
  StartY.pco=65535 //  3   - 
}
if(sys1==4) //    4 - (  )
{
  StartH.pco=63488 //  4   - 
}else // 
{
  StartH.pco=65535 //  4   - 
}
if(sys1==5) //    5 - (  )
{
  StartMi.pco=63488 //  5   - 
}else // 
{
  StartMi.pco=65535 //  5   - 
}
if(sys1==6) //    6 - (  )
{
  StartS.pco=63488 //  6   - 
}else // 
{
  StartS.pco=65535 //  6   - 
}
if(sys1==7) //    7 - (  )
{
  StopD.pco=63488 //  7   - 
}else // 
{
  StopD.pco=65535 //  7   - 
}
if(sys1==8) //    8 - (  )
{
  StopMo.pco=63488 //  8   - 
}else // 
{
  StopMo.pco=65535 //  8   - 
}
if(sys1==9) //    9 - (  )
{
  StopY.pco=63488 //  9   - 
}else // 
{
  StopY.pco=65535 //  9   - 
}
if(sys1==10) //    10 - (  )
{
  StopH.pco=63488 //  10   - 
}else // 
{
  StopH.pco=65535 //  10   - 
}
if(sys1==11) //    11 - (  )
{
  StopMi.pco=63488 //  11   - 
}else // 
{
  StopMi.pco=65535 //  11   - 
}
if(sys1==12) //    12 - (  )
{
  StopS.pco=63488 //  12   - 
}else // 
{
  StopS.pco=65535 //  12   - 
}


Más información sobre el comando vis: cambiar la visibilidad del elemento
:
vis obj,state
:
obj: ID .
state: 1- , 0 –
. vis .

Con la pantalla de configuración del canal finalizada, vaya a la pantalla de configuración de hora actual ( SetCurrentTime ID = 2 ).



Aquí, como en otras pantallas en el Evento de preinicialización (llamado antes de que se inicialice la pantalla), volvemos a unir los botones físicos a los botones virtuales en esta pantalla.

cfgpio 0,1,b11 //  Esc (IO0)     b1 ("")
cfgpio 1,1,b10 //  Enter (IO1)     b10 ("   0")
cfgpio 2,1,b14 //  Right (IO2)     b14 (" 1    ")
cfgpio 3,1,b13 //  Down (IO3)     b13 ("   ")
cfgpio 4,1,b12 //  Up (IO4)     b12 ("   ")
cfgpio 5,1,b15 //  Left (IO5)     b15 (" 1    ")
sel.val=1 //    1 ()

Caso del tacto de prensa Evento botón b0 - «Añadir a la hora actual día ".

if(rtc2<31)//          31
{
  rtc2=rtc2+1 //      
}

Caso del tacto de prensa Evento botón b2 - «Añadir mes a la hora actual ".

if(rtc1<12) //          12
{
  rtc1=rtc1+1 //       
}

Caso del tacto de prensa Evento botón B4 - «Añadir el año a la hora actual ".

rtc0=rtc0+1 //           

Caso del tacto de prensa Evento botón b6 - «Añadir una hora a la hora actual ".

if(rtc3<23) //          23
{
  rtc3=rtc3+1 //       
}

Caso del tacto de prensa Evento botón B8 - «Añadir al momento actual de tiempo ".

if(rtc4<59) //          59
{
  rtc4=rtc4+1 //       
}

Caso del tacto de prensa Evento botones B1 - «Quitad el día de la hora actual ".

if(rtc2>1)//          1
{
  rtc2=rtc2-1 //      
}

El evento Touch Press del botón b3 es "Restar el mes de la hora actual".

if(rtc1>1) //          1
{
  rtc1=rtc1-1 //      
}

El evento Touch Press del botón b5 es "Restar el año de la hora actual".

if(rtc0>2016) //          2016
{
  rtc0=rtc0-1 //      
}

El evento Touch Press del botón b7 es "Restar una hora de la hora actual".

if(rtc3>0)//          0
{
  rtc3=rtc3-1 //      
}

Caso del tacto de prensa Evento botón B9 - «Quitad el minuto de la hora actual ".

if(rtc4>0) //          0
{
  rtc4=rtc4-1 //      
}

El evento Touch Press del botón b10 es "Establecer segundos a 0".

rtc5=0 //         0

El evento Touch Press del botón b11 es "Salir".

page 0 //    

El evento Touch Press del botón b12 es "Ir al campo anterior". El botón es invisible. Este botón en esta pantalla está vinculado al botón físico Arriba (IO4) en la Tarjeta de expansión .

if(sel.val<2)//    1 ()
{
  sel.val=5 //    5 ()
}else // 
{
  sel.val=sel.val-1 //    
}

Caso del tacto de prensa Evento botón B13 - «Ir al siguiente campo ". El botón es invisible. Este botón en esta pantalla está vinculado al botón físico Down (IO3) en la tarjeta de expansión .

if(sel.val>4)//   - 5 ()	
{
  sel.val=1 //    1 ()
}else // 
{
  sel.val=sel.val+1 //    
}

Caso del tacto de prensa Evento botón B14 - «Añadir 1 al valor del campo elegido ". El botón es invisible. Este botón en esta pantalla está vinculado al botón físico derecho (IO2) en la placa de expansión .

if(sel.val==1)//   1()
{
  click b0,1 //     b0 ( )
}
if(sel.val==2) //    2()
{
  click b2,1 //     b2 ( )
}
if(sel.val==3)//   3()
{
  click b4,1 //     b4 ( )
}
if(sel.val==4)//   4()
{
  click b6,1 //     b6 ( )
}
if(sel.val==5)//   5()
{
  click b8,1 //     b8 ( )
}

Caso del tacto de lanzamiento Evento botón b14

if(sel.val==1) //    1()
{
  click b0,0 //    b0 ( )
}
if(sel.val==2) //    2()
{
  click b2,0 //    b2 ( )
}
if(sel.val==3) //    3()
{
  click b4,0 //    b4 ( )
}
if(sel.val==4) //    4()
{
  click b6,0 //    b6 ( )
}
if(sel.val==5) //    5()
{
  click b8,0 //    b8 ( )
}

El evento Touch Press del botón b15 es "Restar 1 del valor del campo seleccionado". El botón es invisible. Este botón en esta pantalla está vinculado al botón físico izquierdo (IO5) en la placa de expansión .

if(sel.val==1) //    1()
{
  click b1,1 //     b1 ( )
}
if(sel.val==2) //    2()
{
  click b3,1 //     b3 ( )
}
if(sel.val==3)//   3()
{
  click b5,1 //     b5 ( )
}
if(sel.val==4)//   4()
{
  click b7,1 //     b7 ( )
}
if(sel.val==5)//   5()
{
  click b9,1//    b9 ( )
}

Caso del tacto de lanzamiento Evento botón b15

if(sel.val==1) //    1()
{
  click b1,0 //    b1 ( )
}
if(sel.val==2) //    2()
{
  click b3,0 //    b3 ( )
}
if(sel.val==3)//   3()
{
  click b5,0 //    b5 ( )
}
if(sel.val==4)//   4()
{
  click b7,0 //    b7 ( )
}
if(sel.val==5) //    5()
{
  click b9,0 //    b9 ( )
}

Bueno, como en las otras ventanas, el temporizador tm0 se configura en esta ventana con un período de respuesta de 200 milisegundos. En el evento de temporizador de este temporizador, se actualizan los valores de los campos de texto.

Código bajo el spoiler

//    
temp.val=rtc2 //   temp         (  rtc2)
tempText.txt=""//   tempText   
if(temp.val<10)//     10
{
 tempText.txt="0" //    tempText   "0"
}
cov temp.val,TT1.txt,0 //             TT1
CurrentTime1.txt=tempText.txt+TT1.txt //      CurrentTime1    tempText  TT1
temp.val=rtc1 //   temp         (  rtc1)
tempText.txt="" //    tempText   
if(temp.val<10) //      10
{
 tempText.txt="0" //    tempText   "0"
}
cov temp.val,TT1.txt,0 //             TT1
CurrentTime1.txt=CurrentTime1.txt+"-"+tempText.txt+TT1.txt //        CurrentTime1     "-"     tempText  TT1
temp.val=rtc0 //   temp         (  rtc0)
tempText.txt=""//   tempText   
if(temp.val<10)//     10
{
 tempText.txt="0"//   tempText   "0"
}
cov temp.val,TT1.txt,0 //             TT1
CurrentTime1.txt=CurrentTime1.txt+"-"+tempText.txt+TT1.txt //        CurrentTime1     "-"     tempText  TT1
temp.val=rtc3 //   temp         (  rtc3)
tempText.txt="" //    tempText   
if(temp.val<10) //      10
{
 tempText.txt="0" //    tempText   "0"
}
cov temp.val,TT1.txt,0 //             TT1
CurrentTime1.txt=CurrentTime1.txt+" "+tempText.txt+TT1.txt //        CurrentTime1       " "     tempText  TT1
temp.val=rtc4 //   temp         (  rtc4)
tempText.txt="" //    tempText   
if(temp.val<10) //      10
{
 tempText.txt="0" //    tempText   "0"
}
cov temp.val,TT1.txt,0 //             TT1
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt //        CurrentTime1     ":"     tempText  TT1
temp.val=rtc5 //   temp         (  rtc4)
tempText.txt="" //    tempText   
if(temp.val<10) //      10
{
 tempText.txt="0" //    tempText   "0"
}
cov temp.val,TT1.txt,0 //             TT1
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt //        CurrentTime1     ":"     tempText  TT1
//     (t1 - t5)
if(sel.val==1) //    1 ()
{
  t1.pco=63488 //    (t1)    - 
}else//
{
  t1.pco=65535 //    (t1)    - 
}
if(sel.val==2) //    2 ()
{
  t2.pco=63488 //    (t2)    - 
}else // 
{
  t2.pco=65535 //    (t2)    - 
}
if(sel.val==3)//   3 ()
{
  t3.pco=63488 //    (t3)    - 
}else // 
{
  t3.pco=65535 //    (t3)    - 
}
if(sel.val==4)//   4 ()
{
  t4.pco=63488 //    (t4)    - 
}else // 
{
  t4.pco=65535 //    (t4)    - 
}
if(sel.val==5)//   5 ()
{
  t5.pco=63488 //    (t5)    - 
}else // 
{
  t5.pco=65535 //    (t5)    - 
}


En esto hemos terminado con el panel. En principio, resultó un sistema autónomo que puede funcionar sin equipo adicional. Pero no podemos usar las respuestas del canal. Solo tenemos dos entradas libres: salidas. Aquí el arduinka vendrá al rescate.

En la versión 2.2 de FLProg, se actualizó el soporte para paneles Nextion HMI. Hay nuevos bloques para ella.

  1. Bloquear " Hacer clic en un elemento ": le permite simular un clic y soltar cualquier elemento en la pantalla del panel.
  2. Los bloques " Obtener el valor de la variable del sistema " y " Establecer el valor de la variable del sistema " le permiten leer y escribir los valores de casi todas las variables del sistema del panel
  3. El bloque " Configuración GPIO " : le permite configurar los modos de operación de E / S del panel en cualquier momento

Bueno, en esta lección (dado que todavía está más dedicado a programar el panel en sí), solo leemos el estado de los canales del temporizador (variables tsr1 - tsr5 ) y lo enviamos a los LED.

Esquema del proyecto para Arduino en el programa FLProg.



Un pequeño video del funcionamiento del dispositivo (este sigue siendo un proyecto de capacitación, por lo que se ensambla de forma temporal)



Aplicaciones:

  1. Proyecto para Nextion Editor (firmware para el panel)
  2. Proyecto para el programa FLProg (firmware para arduino)

Source: https://habr.com/ru/post/es400463/


All Articles