FLProg + Nextion HMI erweitert



ITEAD bringt neue erweiterte Produktreihe seiner Nextion-HMI-Panels auf den Markt Vertreter des Unternehmens stellten mir eine Kopie dieser Linie zur Verfügung, um neue Panel-Funktionen in das FLProg-Programm zu integrieren. In Version 2.2 wurde dies implementiert. In dieser Lektion werden wir die neuen Funktionen des Panels betrachten und beispielsweise einen programmierbaren Timer für fünf Kanäle erstellen.

Berücksichtigen Sie zunächst die Eigenschaften des Panels. Die erweiterte Leitung verfügt über eine integrierte Echtzeituhr, 1024 Byte nichtflüchtigen Speicher und 8 digitale Ein- / Ausgänge. Jeder von ihnen kann als Eingang oder als Ausgang konfiguriert werden. Vier davon (vom 4. bis zum 7.) können als PWM-Ausgänge konfiguriert werden.



Neben der Nextion HMI Enhanced-Reihe selbst wurde auch die Erweiterungskarte veröffentlicht. Auf



dem GPIO-Panel sind Bedienelemente und Anzeigen angebracht.



Solche Möglichkeiten ermöglichen es, ein fast vollständiges Gerät basierend auf diesem Panel zu erstellen. In dieser Lektion werde ich mich auf die Programmierung des Panels selbst konzentrieren, da es zu diesem Thema nur wenige Informationen gibt, aber viele Fallstricke gibt. Ein Link zum Projekt für das Nextion Editor-Programm befindet sich am Ende des Beitrags.

Der Beginn der Arbeit mit dem Nextion-Editor, sein Start, die anfängliche Auswahl der Codierung und der Art des Panels wurden in meinen vorherigen Beiträgen tyts , tyts und tyts erörtert . Deshalb werden wir nicht weiter darauf eingehen.
Das Programm besteht aus drei Panel Home - Bildschirm ( das Haupt ), Einstellen den Timers ( der SetTimer ) und Zeiteinstellung ( SetCurrentTime ).

Beginnen wir mit dem Hauptbildschirm.



Dieser Bildschirm zeigt die Einstellungen zum Ein- und Ausschalten, den Status jedes Kanals, die Schaltfläche zum Ändern des Status der Kanäle und die Schaltfläche zum Umschalten auf den Bildschirm zum Einstellen der aktuellen Uhrzeit an. Wenn Sie auf den Text klicken, in dem die Einstellungen des Kanals angezeigt werden, wechseln Sie zur Einstellung dieses Kanals. Darüber hinaus werden auf diesem Bildschirm vier versteckte Schaltflächen benötigt, um an die physischen Schaltflächen auf der Erweiterungskarte zu binden . .



Betrachten Sie den Code auf dem Hauptbildschirm.

Ereignis Preinitialilize das Ereignis (der Bildschirm vor der Initialisierung genannt wird).

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

Hier binden wir die physischen Tasten auf der Erweiterungskarte an die virtuellen Tasten auf dem Bildschirm.

Weitere Informationen zum Befehl cfgpio - Einrichten der physischen Ein- und Ausgänge des Bedienfelds (nur erweiterte Bedienfelder verfügen über diesen Befehl).
:
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


Ereignis - Touch Press Event Taste b0 - «Set Zeit»

page 2 //      

Es ist alles selbsterklärend

Ereignis - Touch Press Event - Tasten b1 - «Schaltzustand des ersten Kanals“

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

Zuerst lesen wir die Kanalaktivität aus dem EEPROM. Jeder Kanal kann auf der Seite mit den Kanaleinstellungen von der Arbeit ausgeschlossen werden. Der Repo- Befehl "Lesen aus dem EEPROM" wird nachstehend ausführlicher erläutert. Wenn der Kanal dann aktiv ist, wechseln Sie seinen Status. Der aktuelle Zustand der Kanäle wird in den Variablen tsr1 - tsr5 für jeden der Kanäle gespeichert .

Funktionen in der Syntax des if else-Ausdrucks
if(TempB.val==1) – .
. .
}else
, . , else , .

Für die verbleibenden Tasten zum Ändern des Kanalstatus ( b2 - b5 ) ist der Touch Press-Ereigniscode identisch. Nur die Adresse im EEPROM und die Kanalzustandsvariable werden geändert.

Ereignis - Touch Press Event Taste b6 - «den vorherigen Kanal auswählen„. Die Schaltfläche ist unsichtbar. Rendering-Modus ( sta ) - Bild zuschneiden (zugeschnittenes Bild). Als Bild im nicht gedrückten Zustand ( picc ) und im gedrückten Zustand ( picc2 ) wird das Hintergrundbild des Fensters ausgewählt. Aus diesem Grund wird die Schaltfläche nicht angezeigt, funktioniert aber. Diese Schaltfläche auf diesem Bildschirm ist mit der physischen Aufwärts- Schaltfläche (IO4) auf der Erweiterungskarte verbunden .

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

Die Variable SelTim enthält die Nummer des aktuell ausgewählten Timers. Alles andere, denke ich, geht aus den Kommentaren hervor. Ereignis - Touch Press Event Taste b7 - «den nächsten Kanal wählen„. Die Schaltfläche ist unsichtbar. Diese Schaltfläche auf diesem Bildschirm ist mit der physischen Down- Schaltfläche (IO3) auf der Erweiterungskarte verbunden .



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

Hier denke ich, dass das Gleiche klar ist.

Ereignis - Touch Press Event Taste b8 - «Bearbeiten Sie den gewählten Kanal„. Die Schaltfläche ist unsichtbar. Diese Schaltfläche auf diesem Bildschirm ist mit der rechten physischen Schaltfläche (IO2) auf der Erweiterungskarte verbunden .

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
}

Klicken Sie auf Befehlsdetails - simulieren Sie das Klicken oder Freigeben eines Elements
:
click cmpID,event
:
cmpID: ID .
event: 0 – ; 1 –
. click .

Ereignis - Touch Press Event Taste B9 - «Schaltzustand des gewählten Kanals„. Die Schaltfläche ist unsichtbar. Diese Schaltfläche auf diesem Bildschirm ist mit der linken physischen Schaltfläche (IO5) auf der Erweiterungskarte verbunden .

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
}

Ereignis - Touch Press Event der Textbox TimerText1 - «Anzeige Kanalstatus 1" .

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

FĂĽr andere Textfelder ( TimerText2 - TimerText5 ) ist der Touch Press-Ereigniscode identisch. Nur in der Systemvariablen sys0 wird die entsprechende Kanalnummer eingegeben.

sys0, sys1, sys2 sind globale numerische Variablen, die nicht erstellt oder definiert werden müssen. Sie können auf jedem Bildschirm verwendet werden. Der Standardwert für diese drei Variablen ist 0, sie können gelesen und geschrieben werden, ihr Wertebereich ist 0 ~ 4294967295. Empfohlen für die Übergabe von Werten zwischen Seiten.

Der tm0- Timer wird auf diesem Bildschirm eingestellt . Dieser Timer wird alle 200 Millisekunden ausgelöst (Parameter tim), wenn die Seite aktiv ist. Der Code zum Überwachen des Status von Timern und zum Neuzeichnen der Komponenten auf der Seite befindet sich im Timer-Ereignis dieses Timers.

Code unter 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)  "+"
}


Funktionen in der Syntax eines for-Ausdrucks
for(n0.val=0; n0.val<100; n0.val++) — .
. .

Lesen Sie mehr ĂĽber den Befehl cov - Konvertierung zwischen Zeichenfolge und numerischen Daten.
:
cov att1,att2,lenth
:
att1:
att2:
lenth: ( 0 – )
:
cov number.val,text.txt,0
number text.
cov text.txt,number.val,5
text.
. cov .

BerĂĽcksichtigen Sie die Position der Daten im EEPROM-Bereich. Jedem Kanal sind 52 Bytes zugeordnet. FĂĽr jeden Wert - 4 Bytes.
EEPROM-Adresse
Startoffset = (Kanalnummer ab 0) * 52
Wert
Offset startenKanalaktivität (0 - Kanal deaktiviert, 1 - Kanal aktiviert)
Startoffset + 4Tag der Kanaleinbeziehung. Wenn nicht berĂĽcksichtigt - 10.000
Startoffset + 8Kanaleinschlussmonat. Wenn nicht berĂĽcksichtigt - 10.000
Startoffset + 12. — 10000
+ 16. — 10000
+ 20. -10000
+ 24. – 10000
+ 28. — 10000
+ 32. – 10000
+ 36. -10000
+ 40. -10000
+ 44. -10000
+ 48Kanal aus zweiter Sekunde. Wenn nicht berĂĽcksichtigt -10000

Von dem Hauptbildschirm fertig sind, bewegen sich auf dem Bildschirm, die Timer - Einstellung ( die SetTimer ID = 1 )



Ereignis Preinitialilize das Ereignis (der Bildschirm vor der Initialisierung genannt).

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  

Hier definieren wir die Bindung der physischen Tasten auf der Erweiterungskarte an die Anforderungen dieses Bildschirms neu und lesen die Daten vor.

Ereignis - Touch Press Event Taste b0 - «Gehen Sie zum nächsten Feld„. Die Schaltfläche ist unsichtbar. Diese Schaltfläche auf diesem Bildschirm ist mit der rechten physischen Schaltfläche (IO2) auf der Erweiterungskarte verbunden .

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

Ereignis - Touch Press Event Tasten b1 - «Gehen Sie zum vorherigen Feld„. Die Schaltfläche ist unsichtbar. Diese Schaltfläche auf diesem Bildschirm ist mit der linken physischen Schaltfläche (IO5) auf der Erweiterungskarte verbunden .

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

Ereignis - Touch Press Event - Taste b2 - "Aktivieren / Deaktivieren Kanal" oder "Exit" (Hold 2 sec). Die Schaltfläche ist unsichtbar. Diese Schaltfläche auf diesem Bildschirm ist mit der physischen Esc- Schaltfläche (IO0) auf der Erweiterungskarte verbunden.

tm1.en=1 //   tm1

Hier starten wir den Hilfstimer. Wenn Sie die physische Esc- Taste (IO0) auf der Erweiterungskarte 2 Sekunden lang gedrückt halten ( Timer- Tim- Eigenschaft ), wird der Timer ausgelöst ( Timer-Ereignis des tm1- Timers aufrufen ). Wenn Sie die Taste früher loslassen , wird das Touch-Release-Ereignis der Taste b2 ausgelöst

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

Event - Timer Event Timer TM1

click b11,1 //      b11 ("")

Ereignis - Touch Press Event - Taste ein BYE - «Aktivieren / Deaktivieren Registry bei der Operation“ des ausgewählten Feldes.

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

Lesen Sie mehr ĂĽber wepo-Befehle - schreiben Sie in das EEPROM und repo - lesen Sie aus dem EEPROM (nur erweiterte Bedienfelder verfĂĽgen ĂĽber diese Befehle).
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 .

Ereignis - Touch Press Event Taste BYP - «1 auf den ausgewählten Bereich hinzufügen„.

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

Ereignis - Touch Press Event Taste BYM - «1 werden abgezogen gewähltes Feld„.

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

Ereignis - Touch Press Event Taste b11 - «Zurück zur Startseite„.

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

Das Touch Press-Ereignis des StartD- Textfelds lautet " Tagessollwertauslöser ".

sys1=1 //   1

Bei Textfeldern mit anderen Einstellungen ist der Ereigniscode fĂĽr Touch Press bis auf die Feldnummer identisch.

Die Nummern der Einstellwertfelder sind:

StartMo - 2 („Monat des Betriebssollwerts“).
StartY - 3 („Jahr der Sollwertauslösung“).
StartH - 4 ("Stunde der Betriebseinstellung").
StartMi - 5 („Sollwert für die Betriebsminute“).
StartS - 6 („Sekunde des Betriebssollwerts“).
StopD - 7 (Einstellung „Tag der Reise“).
StopMo - 8 ("Monat der Reiseeinstellung ").
StopY - 9 ("Jahr der Reiseeinstellung ").
StopH - 10 ("Stunden der Reiseeinstellung ").
Stopmi- 11 („Minutenauslöseeinstellung„).
Stopps - 12 („Sekunden des Auslösesollwerts„).

Auf diesem Bildschirm wird auch der tm0-Timer mit einer Auslösezeit von 200 Millisekunden eingestellt. Im Timer-Ereignis dieses Timers werden die Werte der Einstellungsfelder aktualisiert.

Code unter dem 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   - 
}


Weitere Informationen zum Befehl vis - Ändern der Sichtbarkeit von Elementen
:
vis obj,state
:
obj: ID .
state: 1- , 0 –
. vis .

Wechseln Sie nach Abschluss des Bildschirms mit den Kanaleinstellungen zum Bildschirm mit den aktuellen Zeiteinstellungen ( SetCurrentTime ID = 2 ).



Hier, wie auf anderen Bildschirmen im Preinitialilize-Ereignis (aufgerufen, bevor der Bildschirm initialisiert wird), binden wir die physischen Schaltflächen erneut an die virtuellen Schaltflächen auf diesem Bildschirm.

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

Ereignis - Touch Press Event Taste b0 - «zur aktuellen Tageszeit hinzufügen„.

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

Ereignis - Touch Press Event - Taste b2 - «Monat auf die aktuelle Zeit hinzufügen„.

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

Ereignis - Touch Press Event Taste b4 - «das Jahr auf die aktuelle Zeit hinzufügen„.

rtc0=rtc0+1 //           

Ereignis - Touch Press Event Taste b6 - «eine Stunde auf die aktuelle Zeit hinzufügen„.

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

Ereignis - Touch Press Event Taste b8 - «zum aktuellen Moment der Zeit hinzufügen„.

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

Ereignis - Touch Press Event Tasten b1 - «den Tag von der aktuellen Zeit zum Mitnehmen„.

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

Das Touch-Press-Ereignis der Taste b3 lautet "Subtrahieren Sie den Monat von der aktuellen Zeit".

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

Das Touch-Press-Ereignis der Taste b5 lautet "Subtrahieren Sie das Jahr von der aktuellen Zeit".

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

Das Touch-Press-Ereignis der Taste b7 lautet "Eine Stunde von der aktuellen Zeit abziehen".

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

Ereignis - Touch Press Event Taste B9 - «die Minute von der aktuellen Zeit zum Mitnehmen„.

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

Das Touch Press-Ereignis der Taste b10 lautet „Sekunden auf 0 setzen“.

rtc5=0 //         0

Ereignis - Touch Press Event Taste b11 - «Beenden».

page 0 //    

Das Touch-Press-Ereignis der Taste b12 lautet "Zum vorherigen Feld wechseln ". Die Schaltfläche ist unsichtbar. Diese Schaltfläche auf diesem Bildschirm ist mit der physischen Aufwärts- Schaltfläche (IO4) auf der Erweiterungskarte verbunden .

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

Ereignis - Touch Press Event Taste b13 - «Gehen Sie zum nächsten Feld„. Die Schaltfläche ist unsichtbar. Diese Schaltfläche auf diesem Bildschirm ist mit der physischen Down- Schaltfläche (IO3) auf der Erweiterungskarte verbunden .

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

Ereignis - Touch Press Event Taste b14 - «1 auf den Wert des gewählten Feld hinzufügen„. Die Schaltfläche ist unsichtbar. Diese Schaltfläche auf diesem Bildschirm ist mit der rechten physischen Schaltfläche (IO2) auf der Erweiterungskarte verbunden .

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

Ereignis - Touch - Freigabe - Ereignis - Taste 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 ( )
}

Das Touch-Press-Ereignis der Taste b15 lautet "Subtrahieren Sie 1 vom Wert des ausgewählten Felds". Die Schaltfläche ist unsichtbar. Diese Schaltfläche auf diesem Bildschirm ist mit der linken physischen Schaltfläche (IO5) auf der Erweiterungskarte verbunden .

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

Ereignis - Touch - Freigabe - Ereignis - Taste 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 ( )
}

Nun, wie in den anderen Fenstern wird der tm0- Timer in diesem Fenster mit einer Antwortzeit von 200 Millisekunden eingestellt. Im Timer-Ereignis dieses Timers werden die Werte der Textfelder aktualisiert.

Code unter dem 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)    - 
}


Damit sind wir mit dem Panel fertig. Im Prinzip stellte sich heraus, dass es sich um ein autonomes System handelt, das ohne zusätzliche Ausrüstung arbeiten kann. Wir können die Kanalantworten jedoch nicht verwenden. Wir haben nur zwei freie Ein- und Ausgänge. Hier wird die Arduinka zur Rettung kommen.

In Version 2.2 von FLProg wurde die Unterstützung für Nextion HMI-Panels aktualisiert. Es gibt neue Blöcke für sie.

  1. Block " Klicken auf ein Element " - Mit dieser Option können Sie ein Klicken simulieren und auf ein Element auf dem Bedienfeldbildschirm loslassen.
  2. Mit den Blöcken „ Abrufen des Werts der Systemvariablen “ und „ Festlegen des Werts der Systemvariablen “ können Sie die Werte fast aller Systemvariablen des Bedienfelds lesen und schreiben
  3. Mit dem Block „ GPIO-Einstellungen “ können Sie die E / A-Betriebsmodi des Panels jederzeit konfigurieren

Nun, in dieser Lektion (da es immer noch mehr um die Programmierung des Panels selbst geht) lesen wir einfach den Status der Timer-Kanäle (Variablen tsr1 - tsr5 ) und geben ihn an die LEDs aus.

ProjektĂĽbersicht fĂĽr Arduino im FLProg-Programm.



Ein kleines Video über den Betrieb des Geräts (Dies ist noch ein Schulungsprojekt, daher wird es vorübergehend zusammengestellt.)



Anwendungen:

  1. Projekt fĂĽr Nextion Editor (Firmware fĂĽr das Panel)
  2. Projekt fĂĽr das FLProg-Programm (Firmware fĂĽr Arduino)

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


All Articles