در این مرحله از آموزش با فشار دادن دکمه ها، عدد را تغییر می دهیم.

با TouchGFX Designer به راحتی می توان رویدادها را با یک دکمه از طریق Interaction انجام داد. مثلا با فشار دادن دکمه، کدی اجرا یا انتقال یک عنصری روی میدهد.

تب Interactions را در گوشه بالا سمت راست انتخاب کرده و روی دکمه Add Interaction کلیک کنید تا Interaction جدید ایجاد شود.

ما دو Interaction (برای هر یک از دکمه ها) ایجاد خواهیم کرد. و هر دو Interaction را برای فراخوانی متد در اسکرین فعلی، به شکل زیر تنظیم خواهیم کرد.

فیلد Trigger را به Button is clicked تغییر دهید.

فیلد Choose clicked source را بر روی Up_button (همان دکمه ای که در ویجت دکمه ایجاد کردیم )تنظیم کنید.

فیلد Action را به Call new virtual function تغییر دهید.

برایFunction Name نام buttonUpClicked را وارد کنید.

این متدی است که در زمان تولید کد برای برنامه نویس ایجاد می شود. بنابراین کاری که قرار است در زمان فشار دادان دکمه انجام شود را در این قسمت پیاده سازی می کنیم.

و نام UpCounterInteraction برای Interaction انتخاب کنید.

 

 

یک Interaction مشابه برای دکمهDOWN_button ایجاد کنید.

هنگامی که Interaction را با تابع Call new virtual استفاده می کنید، TouchGFX Designer یک تابع virtual را تولید می کند. Generate Code را از گوشه بالا سمت راست کلیک کنید منتظر باشید تا کد ایجاد شود. بعد بر روی دکمه Browse Code در نوار پایین کلیک کنید و به پوشه زیر بروید.

MyApplication3\generated\gui_generated\include\gui_generated\settingscreen_screen\

و فایل SettingScreenViewBase.hpp را باز کنید. در واقع پوشه settingscreen_screen همان نام صفحه ای است که در زمان ایجاد انتخاب کرده اید(ممکن است برای شما اسم دیگری باشد) در صورت تمایل می توانید یکی از فایل های پروژه را از مسیرهای جدول زیر باز کرده و فایل را در آنجا بیابید.

 

IDE Path to project file
Visual Studio simulator/msvs/Application.sln
IAR Embedded Workbench 7 target/IAR/application.eww
IAR Embedded Workbench 8 target/IAR8.x/application.eww
KEIL uVision v5 target/Keil/application.uvprojx

 

متدهای virtual جدید در بخش عمومی کلاس SettingScreenViewBase یافت می شود. متدهای تولید شده پیاده سازی ندارند. هدف این است که برنامه نویس این متدها را در زیر کلاس اجرا کند.

 

پیاده سازی متدهای virtual 

اکنون کار باقیمانده پیاده سازی این دو متد برای تغییر مقدار کانتر در هنگام فشار دادن دکمه ها است. برای انجام این کار، متدها را دوباره در hpp-file اعلام کنید. آن را می توان از مسیر زیر پیدا کرد.

MyApplication3\gui\include\gui\settingscreen_screen\SettingScreenView.hpp

این فایل را باز کنید و دو اعلام تابع را در کلاس وارد کنید.

کار بعدی پیاده سازی دو متد در فایل cpp-file است. این فایل در مسیر زیر قرار دارد.

MyApplication3\gui\src\settingscreen_screen\SettingScreenView.cpp

در پیاده سازی زیر ما فراخوانی با touchgfx_printf اضافه کرده ایم. این تابع برای چاپ متن هنگام اجرای شبیه ساز مفید است. هنگام اجرای نهایی، هیچ تاثیری در برنامه نخواهد داشت.

برای اجرای کد جدید، دوباره روی Run Simulator در TouchGFX Designer کلیک کنید. چند بار روی دکمه ها کلیک کنید تا ببینید که Interaction و متدها مطابق آنچه انتظار می رود کار می کنند.

 

آپدیت مقدار کانتر

آخرین کار نوشتن کد در متدهای جدید برای آپدیت مقدار کانتر در هنگام فشار دادن دکمه است. برای انجام این کار، ابتدا یک متغیر عدد صحیح جدید، به نام count، در SettingScreenView ایجاد می کنیم.

SettingScreenView.cpp
#ifndef SETTINGSCREENVIEW_HPP
#define SETTINGSCREENVIEW_HPP

#include <gui_generated/settingscreen_screen/SettingScreenViewBase.hpp>
#include <gui/settingscreen_screen/SettingScreenPresenter.hpp>

class SettingScreenView : public SettingScreenViewBase
{
public:
    SettingScreenView();
    virtual ~SettingScreenView() {}
    virtual void setupScreen();
    virtual void tearDownScreen();
    virtual void buttonUpClicked();
    virtual void buttonDownClicked();
protected:
    int count;
};

#endif // SETTINGSCREENVIEW_HPP

در متدها مقدار کانتر را افزایش و کاهش می دهیم. مقدار جدید سپس به یک رشته تبدیل می شود و به بافر 10 کاراکتری که در مرحله قبل برای متن پیکربندی کرده ایم کپی می شود.

SettingScreenView.hpp
void SettingScreenView::buttonUpClicked()
{
    touchgfx_printf("buttonUpClicked\n");

    count++;
    Unicode::snprintf(textCounterBuffer, TEXTCOUNTER_SIZE,"%d", count);
    textCounter.invalidate();
}

void SettingScreenView::buttonDownClicked()
{
    touchgfx_printf("buttonDownClicked\n");

    count--;
    Unicode::snprintf(textCounterBuffer, TEXTCOUNTER_SIZE, "%d", count);
    textCounter.invalidate();
}

 

قبل از اتمام برنامه به یک مورد دیگر اشاره می کنیم. TouchGFX فقط کاراکترهای مورد نیاز از فونت های استفاده شده را شامل می شود، بنابراین ما باید به TouchGFX Designer بگوییم تا کاراکترهای های 0-9 را در تایپوگرافی پیش فرض درج کند.

ما فقط می خواهیم یک عدد را نشان دهیم ، بنابراین متن را فقط به <d> تغییر خواهیم داد.

برای انجام این کار، به TouchGFX Designer برگردید و بر روی تب Texts و سپس تب تایپوگرافی کلیک کنید. در ستون Wildcard Ranges برای تایپوگرافی پیش فرض، محدوده 0-9 را اضافه کنید.

حالا دوباره روی Run Simulator کلیک کنید و برای تست چند بار روی دکمه ها کلیک کنید.

همانطور که می بینید، اگر بخواهید یک عدد منفی را نشان دهید، خراب می شود. این با وارد کردن یک محافظ در تابع buttonDownClicked می تواند اصلاح شود، که مطمئن شود کانتر پایین تر از صفر نمی رود و یا برای اجازه دادن به اعداد منفی، باید تایپوگرافی پیش فرض" - " باشد. این می تواند به سادگی با اضافه کردن" - "در ستون کاراکتر های Wildcard برای تایپوگرافی پیش فرض محقق شود.

 

این مرحله از آموزش به پایان رسید. در آموزش بعدی به مولتی اسکرین خواهیم پرداخت.

موفق باشید.

  نظرات

جهت ثبت نظر وارد سایت شوید

راهنمای استفاده از کد در کامنت
````
insert your code
``