FLProg + Nextion HMI المحسن



ITEAD تطلق خطًا جديدًا محسنًا من لوحات HMI التالية قدم لي ممثلو الشركة نسخة من هذا الخط لدمج ميزات اللوحة الجديدة في برنامج FLProg. في الإصدار 2.2 ، تم تنفيذ ذلك. في هذا الدرس ، سننظر في الميزات الجديدة للوحة ، على سبيل المثال ، قم بإنشاء مؤقت قابل للبرمجة لخمس قنوات.

للبدء ، ضع في اعتبارك خصائص اللوحة. يحتوي الخط المحسّن على ساعة مدمجة في الوقت الفعلي ، و 1024 بايت من الذاكرة غير المتطايرة ، و 8 مدخلات / مخرجات رقمية. يمكن تكوين كل منهم كمدخل أو كمخرج. يمكن تكوين أربعة منهم (من الرابع إلى السابع) كمخرجات PWM.



بالإضافة إلى خط Nextion HMI المحسن نفسه ، تم إصدار لوحة التوسعة أيضًا



، وتحتوي على عناصر تحكم وشاشات متصلة بلوحة GPIO.



تسمح هذه الفرص بعمل جهاز كامل تقريبًا استنادًا إلى هذه اللوحة. في هذا الدرس ، سأركز على برمجة اللوحة نفسها ، نظرًا لوجود القليل من المعلومات حول هذا الموضوع ، ولكن هناك الكثير من العثرات. يوجد رابط للمشروع لبرنامج Nextion Editor في نهاية المنشور.

تمت مناقشة بداية العمل مع محرر Nextion ، وإطلاقه ، والاختيار الأولي للترميز ، ونوع اللوحة في مشاركاتي السابقة tyts ، tyts ، و tyts . لذلك ، لن نتطرق إلى هذا الأمر.
ويتكون البرنامج من ثلاث الشاشة لوحة الصفحة الرئيسية ( نهر الماين )، إعداد مؤقت ( لSetTimer ) وتحديد الوقت ( SetCurrentTime ).

لنبدأ من الشاشة الرئيسية.



تعرض هذه الشاشة إعدادات التشغيل والإيقاف وحالة كل قناة وزر تغيير حالة القنوات وزر التبديل إلى الشاشة لضبط الوقت الحالي. عند النقر فوق النص الذي يعرض إعدادات القناة ، انتقل إلى إعداد هذه القناة. بالإضافة إلى ذلك ، في هذه الشاشة ، هناك أربعة أزرار مخفية مطلوبة للربط بالأزرار المادية الموجودة على لوحة التوسيع. .



خذ بعين الاعتبار الرمز الموجود على الشاشة الرئيسية.

حدث Preinitialilize الحدث (تسمى الشاشة قبل التهيئة).

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

هنا نربط الأزرار المادية الموجودة على لوحة التوسيع بالأزرار الافتراضية على الشاشة.

المزيد عن أمر cfgpio - إعداد المدخلات والمخرجات المادية للوحة (فقط اللوحات المحسنة لها هذا الأمر).
:
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


حدث اللمس الصحافة الحدث زر B0 - «الوقت المحدد»

page 2 //      

كل شيء تحتاج إلى شرح

الحدث اللمس الصحافة الحدث أزرار B1 - دولة «تبديل القناة الأولى"

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

نقرأ أولاً نشاط القناة من EEPROM. يمكن إيقاف تشغيل كل قناة على صفحة إعدادات القناة. سيتم مناقشة أمر الريبو "القراءة من EEPROM" بمزيد من التفصيل أدناه. ثم ، إذا كانت القناة نشطة ، قم بتبديل حالتها. يتم تخزين الحالة الحالية للقنوات في المتغيرات tsr1 - tsr5 لكل من القنوات ، على التوالي.

الميزات الموجودة في بناء جملة تعبير if else
if(TempB.val==1) – .
. .
}else
, . , else , .

بالنسبة للأزرار المتبقية لتغيير حالة القناة ( b2 - b5 ) ، يكون رمز Touch Press Event هو نفسه. يتم تغيير العنوان في EEPROM ومتغير حالة القناة فقط.

حدث اللمس الصحافة الحدث زر B6 - «اختر القناة السابقة". الزر غير مرئي. وضع التقديم ( sta ) - صورة الاقتصاص (صورة مقطوعة). كصورة في حالة غير مضغوطة ( picc ) وحالة مضغوطة ( picc2 ) ، يتم تحديد صورة خلفية النافذة. ونتيجة لذلك ، لا يتم عرض الزر ، ولكنه يعمل. يرتبط هذا الزر الموجود على هذه الشاشة بالزر الفعلي لأعلى (IO4) الموجود على لوحة التوسيع .

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

يحتوي متغير SelTim على عدد المؤقت المحدد حاليًا. أعتقد أن كل شيء آخر واضح من التعليقات. حدث اللمس الصحافة الحدث زر B7 - «لتحديد قناة المقبلة". الزر غير مرئي. يرتبط هذا الزر في هذه الشاشة بالزر الفعلي للأسفل (IO3) الموجود على لوحة التوسيع .



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

هنا أعتقد أن نفس الشيء واضح.

حدث اللمس الصحافة الحدث زر B8 - «تحرير القناة المختارة". الزر غير مرئي. يرتبط هذا الزر الموجود على هذه الشاشة بالزر الفعلي الأيمن (IO2) الموجود على لوحة التوسيع .

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
}

انقر فوق تفاصيل الأمر - محاكاة النقر فوق عنصر أو تحريره
:
click cmpID,event
:
cmpID: ID .
event: 0 – ; 1 –
. click .

حدث اللمس الصحافة الحدث زر B9 - «وضع التبديل من القناة المختارة". الزر غير مرئي. يرتبط هذا الزر الموجود على هذه الشاشة بالزر الأيسر المادي (IO5) على لوحة التوسيع .

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
}

حدث اللمس الحدث الصحافة مربع النص TimerText1 - «عرض حالة القناة 1".

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

بالنسبة لحقول النص الأخرى ( TimerText2 - TimerText5 ) ، يكون رمز Touch Press Event هو نفسه. يتم إدخال رقم القناة المقابل فقط في متغير النظام sys0 .

sys0 و sys1 و sys2 هي متغيرات رقمية عامة لا تحتاج إلى إنشائها أو تعريفها. يمكن استخدامها على أي شاشة. القيمة الافتراضية لهذه المتغيرات الثلاثة هي 0 ، ويمكن قراءتها وكتابتها ، ونطاق قيمها هو 0 ~ 4294967295. يوصى بتمرير القيم بين الصفحات.

تم ضبط مؤقت tm0 على هذه الشاشة . ينطلق هذا المؤقت كل 200 مللي ثانية (معلمة tim) ، عندما تكون الصفحة نشطة. يوجد رمز لرصد حالة المؤقتات وإعادة رسم المكونات على الصفحة في حدث المؤقت لهذا المؤقت.

كود تحت 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)  "+"
}


الميزات في بناء الجملة للتعبير
for(n0.val=0; n0.val<100; n0.val++) — .
. .

اقرأ المزيد عن الأمر cov - التحويل بين بيانات السلسلة والبيانات الرقمية.
:
cov att1,att2,lenth
:
att1:
att2:
lenth: ( 0 – )
:
cov number.val,text.txt,0
number text.
cov text.txt,number.val,5
text.
. cov .

ضع في اعتبارك موقع البيانات في لوحة EEPROM. يتم تخصيص 52 بايت لكل قناة. لكل قيمة - 4 بايت.
عنوان EEPROM
إزاحة البدء = (رقم القناة يبدأ من 0) * 52
القيمة
ابدأ الإزاحةنشاط القناة (0 - القناة معطلة ، 1 - القناة ممكّنة)
تبدأ الإزاحة + 4يوم تضمين القناة. إذا لم تؤخذ في الاعتبار - 10000
تبدأ الإزاحة + 8شهر تضمين القناة. إذا لم تؤخذ في الاعتبار - 10000
تبدأ الإزاحة + 12. — 10000
+ 16. — 10000
+ 20. -10000
+ 24. – 10000
+ 28. — 10000
+ 32. – 10000
+ 36. -10000
+ 40. -10000
+ 44. -10000
+ 48القناة خارج الثانية. إذا لم تؤخذ في الاعتبار -10000

من الشاشة الرئيسية قد انتهت، ونقل إلى الشاشة، وإعداد الموقت ( معرف SetTimer = 1 )



حدث Preinitialilize الحدث (تسمى الشاشة قبل التهيئة).

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  

هنا نعيد تعريف ربط الأزرار المادية الموجودة على لوحة التوسيع باحتياجات هذه الشاشة ، ونقرأ البيانات مسبقًا.

حدث اللمس الصحافة الحدث زر B0 - «العودة إلى الحقل التالي". الزر غير مرئي. يرتبط هذا الزر الموجود على هذه الشاشة بالزر الفعلي الأيمن (IO2) الموجود على لوحة التوسيع .

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

حدث اللمس الصحافة الحدث أزرار B1 - «الذهاب إلى الحقل السابق". الزر غير مرئي. يرتبط هذا الزر الموجود على هذه الشاشة بالزر الأيسر المادي (IO5) على لوحة التوسيع .

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

حدث اللمس الصحافة الحدث زر B2 - "قناة تفعيل / تعطيل" أو "إنهاء" (عقد 2 ثانية). الزر غير مرئي. هذا الزر في هذه الشاشة مرتبط بزر Esc الفعلي (IO0) على لوحة التوسيع.

tm1.en=1 //   tm1

هنا نبدأ الموقت المساعد. إذا قمت بالضغط على زر المادي خروج (IO0) على التوسع المجلس لمدة 2 ثانية (الملكية تيم الموقت)، وسحب يحدث الموقت (نداء الحدث الموقت الحدث الموقت TM1 )، إذا تم الإفراج عن زر قبل الحدث يرجع اللمس الإصدار الحدث زر B2

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

الحدث الموقت الحدث الموقت TM1

click b11,1 //      b11 ("")

حدث اللمس الصحافة الحدث زر على BYE - «تمكين / تعطيل التسجيل في عملية" من الحقل المحدد.

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

اقرأ المزيد عن أوامر wepo - اكتب إلى EEPROM و repo - اقرأ من EEPROM (فقط اللوحات المحسنة لها هذه الأوامر).
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 .

حدث اللمس الصحافة الحدث زر BYP - «إضافة 1 إلى الحقل المحدد".

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

حدث اللمس الصحافة الحدث زر BYM - «طرح 1 من الحقل المختار".

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

حدث اللمس الصحافة الحدث زر B11 - «العودة إلى الصفحة الرئيسية".

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

حدث اللمس الصحافة الحدث في مربع النص startd - «يوم من قيمة بيك اب".

sys1=1 //   1

بالنسبة إلى الحقول النصية ذات الإعدادات الأخرى ، يكون رمز Touch Press Event هو نفسه باستثناء رقم الحقل.

أرقام حقول قيمة الإعداد هي:

StartMo - 2 ("شهر تعيين نقطة التشغيل").
StartY - 3 ("سنة الرحلة المحددة").
StartH - 4 ("ساعة الإعداد للعملية").
StartMi - 5 (" نقطة ضبط دقيقة للتشغيل").
يبدأ - 6 ("الثانية من نقطة ضبط العملية").
StopD - 7 ("يوم الرحلة").
StopMo - 8 ("إعداد شهر الرحلة").
StopY - 9 ("سنة الرحلة").
StopH - 10 ("إعداد ساعة الرحلة").
Stopmi- 11 ("إعداد رحلة دقيقة").
محطات توقف - 12 ("ثواني نقطة ضبط الرحلة").

يتم ضبط مؤقت tm0 أيضًا على هذه الشاشة بفترة رحلة تبلغ 200 مللي ثانية. في حدث المؤقت لهذا المؤقت ، يتم تحديث قيم حقول الإعداد.

كود تحت المفسد

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


المزيد عن الأمر - تغيير رؤية العنصر
:
vis obj,state
:
obj: ID .
state: 1- , 0 –
. vis .

بعد الانتهاء من شاشة إعدادات القناة ، انتقل إلى شاشة إعدادات الوقت الحالي ( SetCurrentTime ID = 2 ).



هنا ، كما هو الحال في الشاشات الأخرى في حدث Preinitialilize Event (الذي تم استدعاؤه قبل تهيئة الشاشة) ، فإننا نعيد ربط الأزرار الفعلية بالأزرار الافتراضية على هذه الشاشة.

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

حدث اللمس الصحافة الحدث زر B0 - «إضافة إلى الوقت اليوم الحالي".

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

حدث اللمس الصحافة الحدث زر B2 - «إضافة الشهر إلى الوقت الحالي".

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

حدث اللمس الصحافة الحدث زر B4 - «إضافة العام إلى الوقت الحالي".

rtc0=rtc0+1 //           

حدث اللمس الصحافة الحدث زر B6 - «إضافة ساعة إلى الوقت الحالي".

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

حدث اللمس الصحافة الحدث زر B8 - «إضافة إلى اللحظة الراهنة من الزمن".

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

حدث اللمس الصحافة الحدث أزرار B1 - «يسلب يوم من الوقت الحالي".

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

حدث اللمس الصحافة الحدث زر B3 - «يسلب الشهر الماضي من الوقت الحالي".

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

حدث اللمس الصحافة الحدث زر B5 - «يسلب عام من الوقت الحالي".

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

حدث اللمس الصحافة الحدث زر B7 - «يضيع ساعة من الوقت الحالي".

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

حدث اللمس الصحافة الحدث زر B9 - «ارفعوا دقيقة من الوقت الحالي".

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

حدث اللمس الصحافة الحدث زر B10 - «ضبط 0 ثانية".

rtc5=0 //         0

حدث اللمس الصحافة الحدث زر B11 - «الخروج».

page 0 //    

حدث اللمس الصحافة الحدث زر B12 - «الذهاب إلى الحقل السابق". الزر غير مرئي. يرتبط هذا الزر الموجود على هذه الشاشة بالزر الفعلي لأعلى (IO4) الموجود على لوحة التوسيع .

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

حدث اللمس الصحافة الحدث زر B13 - «العودة إلى الحقل التالي". الزر غير مرئي. يرتبط هذا الزر في هذه الشاشة بالزر الفعلي للأسفل (IO3) الموجود على لوحة التوسيع .

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

حدث اللمس الصحافة الحدث زر B14 - «إضافة 1 إلى قيمة الحقل المختار". الزر غير مرئي. يرتبط هذا الزر الموجود على هذه الشاشة بالزر الفعلي الأيمن (IO2) الموجود على لوحة التوسيع .

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

حدث اللمس الإصدار الحدث زر 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 ( )
}

حدث اللمس الصحافة الحدث زر B15 - «طرح 1 من قيمة الحقل المحدد" الزر غير مرئي. يرتبط هذا الزر الموجود على هذه الشاشة بالزر الأيسر المادي (IO5) على لوحة التوسيع .

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

حدث اللمس الإصدار الحدث زر 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 ( )
}

حسنًا ، كما هو الحال في النوافذ الأخرى ، يتم ضبط مؤقت tm0 في هذه النافذة بفترة استجابة تبلغ 200 مللي ثانية. في حدث المؤقت لهذا المؤقت ، يتم تحديث قيم الحقول النصية.

كود تحت المفسد

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


على هذا انتهينا مع اللوحة. من حيث المبدأ ، تحول إلى نظام مستقل يمكنه العمل بدون معدات إضافية. لكن لا يمكننا استخدام ردود القناة. لدينا فقط مدخلين - مخارج. هنا يأتي اردوينكا إلى الإنقاذ.

في الإصدار 2.2 من FLProg ، تم تحديث دعم لوحات Nextion HMI. هناك كتل جديدة لها.

  1. حظر " النقر على عنصر " - يسمح لك بمحاكاة النقر والتحرير على أي عنصر على شاشة اللوحة.
  2. تسمح لك كتل " الحصول على قيمة متغير النظام " و " تعيين قيمة متغير النظام " بقراءة قيم جميع متغيرات النظام في اللوحة وكتابتها تقريبًا
  3. تتيح لك كتلة " إعدادات GPIO " تكوين أوضاع تشغيل لوحة الإدخال / الإخراج في أي وقت

حسنًا ، في هذا الدرس (نظرًا لأنه لا يزال مخصصًا أكثر لبرمجة اللوحة نفسها) ، فإننا ببساطة نقرأ حالة قنوات المؤقت (المتغيرات tsr1 - tsr5 ) ونخرجها إلى مصابيح LED.

مخطط المشروع لاردوينو في برنامج FLProg.



فيديو صغير لتشغيل الجهاز (هذا لا يزال مشروع تدريب ، لذلك يتم تجميعه على أساس مؤقت)



التطبيقات:

  1. مشروع محرر Nextion (البرامج الثابتة للوحة)
  2. مشروع لبرنامج FLProg (البرامج الثابتة لاردوينو )

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


All Articles