HMI FLProg + Nextion Aprimorada



ITEAD lança nova linha aprimorada de seus painéis IHM de Nextion Os representantes da empresa me forneceram uma cópia desta linha para integrar novos recursos do painel ao programa FLProg. Na versão 2.2, isso foi implementado. Nesta lição, consideraremos os novos recursos do painel e, por exemplo, criaremos um timer programável para cinco canais.

Para começar, considere as características do painel. A linha Enhanced possui um relógio de tempo real embutido, 1024 bytes de memória não volátil, 8 entradas / saídas digitais. Cada um deles pode ser configurado como uma entrada ou uma saída. Quatro deles (do 4º ao 7º) podem ser configurados como saídas PWM.



Além da própria linha Nextion HMI Enhanced, também foi lançada a placa de expansão, que



possui controles e displays conectados ao painel GPIO.



Essas oportunidades permitem criar um dispositivo quase completo com base neste painel. Nesta lição, vou me concentrar na programação do próprio painel, pois há pouca informação sobre esse assunto, mas há muitas armadilhas. Um link para o projeto para o programa Nextion Editor está no final da postagem.

O início do trabalho com o Nextion Editor, seu lançamento, a escolha inicial de codificação, tipo de painel foi discutido em meus posts anteriores tyts , tyts e tyts . Portanto, não vamos insistir nisso.
O programa consiste em três tela do painel Home ( Principal ), Definir o temporizador ( o SetTimer ) e Time Setting ( SetCurrentTime ).

Vamos começar na tela principal.



Essa tela exibe as configurações para ativar, desativar, o status de cada canal, o botão para alterar o status dos canais e o botão para alternar para a tela para definir a hora atual. Quando você clica no texto que exibe as configurações do canal, você acessa as configurações deste canal. Além disso, nesta tela, existem quatro botões ocultos necessários para vincular aos botões físicos localizados na placa de expansão. .



Considere o código contido na tela principal.

Evento Preinitialilize o evento (a tela é chamado antes da inicialização).

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 //   

Aqui, vinculamos os botões físicos localizados no Painel de expansão aos botões virtuais na tela.

Mais sobre o comando cfgpio - configurando entradas e saídas físicas do painel (somente os painéis aprimorados possuem esse 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


Evento toque de Imprensa Evento botão b0 - «Set tempo»

page 2 //      

É tudo auto-explicativo

evento Toque Imprensa Evento botões b1 - estado «Chave do primeiro canal"

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

Primeiro, lemos a atividade do canal na EEPROM. Cada canal pode ser desligado do trabalho na página de configurações do canal. O comando repo "lendo da EEPROM" será discutido em mais detalhes abaixo. Então, se o canal estiver ativo, mude de estado. O estado atual dos canais é armazenado nas variáveis tsr1 - tsr5 para cada um dos canais, respectivamente.

Recursos na sintaxe da expressão if else
if(TempB.val==1) – .
. .
}else
, . , else , .

Para os botões restantes para alterar o status do canal ( b2 - b5 ), o código de evento do Touch Press é o mesmo. Somente o endereço na EEPROM e a variável de estado do canal são alterados.

Evento toque de Imprensa Evento botão B6 - «Escolha o canal anterior ". O botão está invisível. Modo de renderização ( sta ) - imagem cortada (imagem cortada). Como uma imagem no estado não pressionado ( picc ) e no estado pressionado ( picc2 ), a imagem de fundo da janela é selecionada. Devido a isso, o botão não é exibido, mas funciona. Este botão nesta tela está vinculado ao botão físico Up (IO4) na placa de expansão .

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

A variável SelTim contém o número do timer selecionado no momento. Tudo o resto, eu acho, está claro nos comentários. Evento toque de Imprensa Evento botão B7 - «para seleccionar o canal seguinte ". O botão está invisível. Este botão nesta tela está vinculado ao botão físico Down (IO3) na placa de expansão .



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

Aqui eu acho que a mesma coisa está clara.

Evento toque de Imprensa Evento botão B8 - «Editar o canal selecionado ". O botão está invisível. Este botão nesta tela está vinculado ao botão físico direito (IO2) na placa de expansão .

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
}

Detalhes do comando Click - simule clicar ou liberar um elemento
:
click cmpID,event
:
cmpID: ID .
event: 0 – ; 1 –
. click .

Evento toque de Imprensa Evento botão B9 - «status da chave do canal selecionado ". O botão está invisível. Este botão nesta tela está vinculado ao botão físico esquerdo (IO5) na placa de expansão .

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
}

O evento Touch Press da caixa de texto TimerText1 é "Exibir status do canal 1".

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

Para outros campos de texto ( TimerText2 - TimerText5 ), o código do evento Touch Press é o mesmo. Somente na variável do sistema sys0 é inserido o número do canal correspondente.

sys0, sys1, sys2 são variáveis ​​numéricas globais que não precisam ser criadas ou definidas. Eles podem ser usados ​​em qualquer tela. O valor padrão para essas três variáveis ​​é 0, elas podem ser lidas e gravadas, seu intervalo de valores é 0 ~ 4294967295. Recomendado para passar valores entre páginas.

O cronômetro tm0 está definido nesta tela . Este timer dispara a cada 200 milissegundos (parâmetro tim), quando a página está ativa. O código para monitorar o status dos cronômetros e redesenhar os componentes na página está localizado no Evento do Timer deste cronômetro.

Código sob 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)  "+"
}


Recursos na sintaxe de um para expressão
for(n0.val=0; n0.val<100; n0.val++) — .
. .

Leia mais sobre o comando cov - conversão entre string e dados 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 a localização dos dados no painel EEPROM. Cada canal possui 52 bytes. Para cada valor - 4 bytes.
Endereço EEPROM
Offset inicial = (número do canal começando em 0) * 52
Valor
Iniciar deslocamentoAtividade do canal (0 - canal desativado, 1 - canal ativado)
Deslocamento inicial + 4Dia de inclusão do canal. Se não for levado em consideração - 10.000
Deslocamento inicial + 8Mês de inclusão no canal. Se não for levado em consideração - 10.000
Deslocamento inicial + 12. — 10000
+ 16. — 10000
+ 20. -10000
+ 24. – 10000
+ 28. — 10000
+ 32. – 10000
+ 36. -10000
+ 40. -10000
+ 44. -10000
+ 48Canal desligado em segundo. Se não for levado em consideração -10000

Na tela principal terminar, passar para a tela, o ajuste do temporizador ( o SetTimer ID = 1 )



Evento Preinitialilize do Evento (a tela é chamado antes da inicialização).

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  

Aqui redefinimos a ligação dos botões físicos localizados no Painel de expansão às necessidades dessa tela e pré-lemos os dados.

Evento toque de Imprensa Evento botão b0 - «Vá para o próximo campo ". O botão está invisível. Este botão nesta tela está vinculado ao botão físico direito (IO2) na placa de expansão .

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

Evento toque de Imprensa Evento botões b1 - «Vá para o campo anterior ". O botão está invisível. Este botão nesta tela está vinculado ao botão físico esquerdo (IO5) na placa de expansão .

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

Evento toque de Imprensa Evento botão b2 - "canal Activar / Desactivar" ou "Exit" (hold 2 seg). O botão está invisível. Este botão nesta tela está vinculado ao botão Esc físico (IO0) na placa de expansão.

tm1.en=1 //   tm1

Aqui iniciamos o temporizador auxiliar. Se você pressionar o botão físico Esc (IO0) sobre a placa de expansão para 2 segundos (propriedade tim temporizador), o rebaixamento acontecer temporizador (chamada evento Event Timer Temporizador TM1 ), se o botão for liberado antes do evento é devido Toque lançamento Evento botão b2

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

Evento Event Timer Temporizador TM1

click b11,1 //      b11 ("")

Evento toque de Imprensa Evento botão uma BYE - «Activar / Desactivar do Registro é de operação" do campo selecionado.

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

Leia mais sobre os comandos wepo - escreva na EEPROM e repo - leia a partir da EEPROM (apenas os painéis aprimorados possuem esses 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 .

Evento toque de Imprensa Evento botão BYP - «Adicionar 1 para o campo selecionado ".

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
  }
}

Evento toque de Imprensa Evento botão BYM - «subtraia 1 do campo escolhido ".

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
  }
}

Evento toque de Imprensa Evento botão b11 - «Voltar para a página inicial ".

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

O evento Touch Press da caixa de texto StartD é "Day Set Point Trigger ".

sys1=1 //   1

Para campos de texto com outras configurações, o código do Touch Press Event é o mesmo, exceto o número do campo.

Os números dos campos dos valores de ajuste são:

StartMo - 2 (“Mês do ponto de ajuste da operação”).
InícioY - 3 (“Ano da viagem do ponto de ajuste”).
StartH - 4 (“Hora da configuração de operação”).
StartMi - 5 (" Ponto de ajuste de minutos de operação").
StartS - 6 (“Segundo do ponto de ajuste da operação”).
StopD - 7 ("Dia da configuração da viagem").
StopMo - 8 ("Mês da configuração da viagem").
StopY - 9 (“Ano da configuração da viagem”).
StopH - 10 (“Hora da configuração da viagem”).
Stopmi- 11 (“Configuração de viagem de minuto„).
StopS - 12 (“Segundos do ponto de ajuste de trip„).

O temporizador tm0 também é definido nesta tela com um período de viagem de 200 milissegundos. No evento Timer deste timer, os valores dos campos de configuração são atualizados.

Código sob o 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   - 
}


Mais sobre o comando vis - alterando a visibilidade do elemento
:
vis obj,state
:
obj: ID .
state: 1- , 0 –
. vis .

Com a tela de configurações do canal finalizada, vá para a tela de configurações da hora atual ( SetCurrentTime ID = 2 ).



Aqui, como em outras telas no evento Preinitialilize (chamado antes da inicialização da tela), ligamos novamente os botões físicos aos botões virtuais nessa tela.

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 ()

Evento toque de Imprensa Evento botão b0 - «Acrescentar ao tempo do dia atual ".

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

Evento toque de Imprensa Evento botão b2 - «Adicionar mês para o tempo atual ".

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

Evento toque de Imprensa Evento botão B4 - «Adicionar o ano para o tempo atual ".

rtc0=rtc0+1 //           

Evento toque de Imprensa Evento botão B6 - «Adicionar uma hora para o tempo atual ".

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

Evento toque de Imprensa Evento botão B8 - «Adicionar ao momento atual de tempo ".

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

Evento toque de Imprensa Evento botões b1 - «Tira o dia a partir do momento atual ".

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

O evento Touch Press do botão b3 é "Subtrair o mês da hora atual".

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

O evento Touch Press do botão b5 é "Subtrair o ano da hora atual".

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

O evento Touch Press do botão b7 é "Subtrai uma hora da hora atual".

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

Evento toque de Imprensa Evento botão B9 - «Tira o minuto do tempo atual ".

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

O evento Touch Press do botão b10 é "Defina segundos para 0".

rtc5=0 //         0

O evento Touch Press do botão b11 é "Sair".

page 0 //    

O evento Touch Press do botão b12 é "Vá para o campo anterior". O botão está invisível. Este botão nesta tela está vinculado ao botão físico Up (IO4) na placa de expansão .

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

Evento toque de Imprensa Evento botão b13 - «Vá para o próximo campo ". O botão está invisível. Este botão nesta tela está vinculado ao botão físico Down (IO3) na placa de expansão .

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

Evento toque de Imprensa Evento botão b14 - «Adicionar 1 ao valor do campo escolhido ". O botão está invisível. Este botão nesta tela está vinculado ao botão físico direito (IO2) na placa de expansão .

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 ( )
}

Evento toque de lançamento Evento botão 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 ( )
}

O evento Touch Press do botão b15 é "Subtrai 1 do valor do campo selecionado". O botão está invisível. Este botão nesta tela está vinculado ao botão físico esquerdo (IO5) na placa de expansão .

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 ( )
}

Evento toque de lançamento Evento botão 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 ( )
}

Bem, como nas outras janelas, o timer tm0 é definido nesta janela com um período de resposta de 200 milissegundos. No evento Timer deste timer, os valores dos campos de texto são atualizados.

Código sob o 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)    - 
}


Sobre isso, terminamos com o painel. Em princípio, resultou em um sistema autônomo que pode funcionar sem equipamento adicional. Mas não podemos usar as respostas do canal. Temos apenas duas entradas gratuitas - saídas. Aqui o arduinka virá em socorro.

Na versão 2.2 do FLProg, o suporte aos painéis Nextion HMI foi atualizado. Existem novos blocos para ela.

  1. Bloco " Clicar em um item " - permite simular um clique e soltar em qualquer item na tela do painel.
  2. Os blocos " Obter o valor da variável do sistema " e " Definir o valor da variável do sistema " permitem ler e gravar os valores de quase todas as variáveis ​​do sistema do painel
  3. O bloco “ GPIO Settings- permite configurar os modos de operação de E / S do painel a qualquer momento

Bem, nesta lição (como ainda é mais dedicado à programação do próprio painel), apenas lemos o status dos canais do timer (variáveis tsr1 - tsr5 ) e os transmitimos para os LEDs.

Resumo do projeto do Arduino no programa FLProg.



Um pequeno vídeo da operação do dispositivo (este ainda é um projeto de treinamento, por isso é montado temporariamente)



Aplicações:

  1. Projeto para o Nextion Editor (firmware para o painel)
  2. Projeto para o programa FLProg (firmware para arduino)

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


All Articles