[Doza-xelatgirtî] Pergala Kontrolkirina Xwarina Pisîka Aqilmend

——Ji Foruma Pêşdebir a DWIN

Di vê hejmarê de, em ê doza çavkaniya vekirî ya xelatgirtî ji Foruma Pêşdebir a DWIN: Pergala Kontrolkirina Xwarina Pisîka Aqilmend bi we bidin nasîn. Endezyaran dîmendera biaqil a DWIN bikar anîn da ku germahî, şilbûn û mîqdara mayî ya xwarina pisîkan bişopînin, û tomarên xwarina pisîkan tomar bikin. Di heman demê de wan bi rengek bêhempa komek UI-ya şêwaza boyaxkirina mîkrokê sêwirand, û her weha gava ku bi tiliyek tê destgirtin, bandorek klîk a mîkrokê jî sêwirand, da ku têgihiştina dîtbarî ya bertekên destikê zêde bike.

Pêşkêş:

Materyalên wêneya 1.UI

Dîmendera biaqil a DWIN pêşkeftina UI ya li ser bingeha wêne, deng û materyalên din temam dike, pêdivî ye ku li gorî naveroka pêşandana ekranê pêşî were amadekirin.

Amerîka (2)

2.Pêşveçûna navberê

Nermalava DGUS bi navbeynkariya qatê ve bandora UI vedigire, materyalên amadekirî di nermalava DGUS de di wêneyek bêkêmasî de berhev dike, û fonksiyonên pêşandan û pêlê saz dike.

Amerîka (1)

3. Bandorên klîk û bandorên deng bicîh bikin

Helwesta destikê bi bernameya 51-ê ve tête wergirtin, bandora pêlêkirinê tevgera tilikê dişopîne, û bandora dengê hevalbendiya sereke jî tê bidestxistin.

(1) Koda cîhê destikê kifş bikin û deng bileyzin:

betal TouchDetect()

{

    u16 Û[3] = 0;

    u8 i = 0;

 

    ji bo(i = 0;i

    {

        Va[i] = Read_Dgus(0x0016 + i);

        eger(Va[0] == 0x5A01)

        {

        }

        wekîdi

        {

            rawesta;

        }

    }

    eger (i != 0) // Pêşîn bikirtînin da ku têkevinê

    {

        u16 play[2] = {0x0001, 0x4000};

        touchAnimationFlag = 1;

        touchAnimationCnt = 0;

        touchPosX = Va[1];

        touchPosY = Va[2];

        write_dgus_vp(0x00A0, play, 2);

    }

}

 

(2) Koda ji bo pêşandana bandora destikê wiha ye:

betal TouchStart()

{

    eger (touchAnimationFlag == 1)

    {

        eger (touchAnimationCnt == 0)

        {

            Write_Dgus(0x5011, touchPosX - 100);

            Write_Dgus(0x5012, touchPosY - 100);

        }

 

        Write_Dgus(0x5000, touchAnimationCnt);

        touchAnimationCnt++;

 

        eger (touchAnimationCnt == 6)

        {

            touchAnimationFlag = 0;

            Write_Dgus(0x5011, 1024);

            Write_Dgus(0x5012, 600);

        }

    }

    

}

 

4. Pêngava paşîn ev e ku meriv pîvanên têkildar bi ekranê ve saz bike, û dûv re daneyan bi rêya ESP32 veguhezîne kontrolkerê xwarina pisîkê da ku fonksiyona xwarina otomatîkî ya xwarina pisîkê fêm bike. Koda taybetî wiha ye:

// Rewşa bişkojkê bistînin

betal get_key_status()

{

    int i = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va=Read_Dgus(0x1000);

    eger (Va != 0x0000)

    {

        //Srûpel veşartî

        eger(Va == 0x0103) //Cihê hejmara g

        {

            u16 guhêrbar[2] = {0x5A01, 19};

            setNum = cihGramNum;

             paşPage = 1; // Vegere rûpela statûyê

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

            write_dgus_vp(0x0084, rûpela veguherînê, 2);

        }

        din eger (Va == 0x0102)

        {

             OneSendData3 (cihêGramNum); //Cîhxwarina pisîkancarek

        }

        din eger (Va == 0x0101) // Rûpelê mîhengê

        {

            u16 guhêrbar[2] = {0x5A01, 3};

            ji bo(i = 0;i

            {

                eger (i == 0)

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0, dema niha[i] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, dema niha[i] / 10 % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 4, dema niha[i] / 100 % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 6, dema niha[i] / 1000 % 10);

                }

                wekîdi

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0, dema niha[i] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, dema niha[i] / 10 % 10);

                }

            }

             write_dgus_vp(0x0084, rûpela veguherînê, 2); // Têkeve rûpela mîhengan

        }

        din eger(Va == 0x0100) //Rrûpela tomar

        {

            u16 guhêrbar[2] = {0x5A01, 2};

            ji bo(i = 0;i

            {

                eger (i == 0)

                {

                    Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[0][i] % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[0][i] / 10 % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 4, eatFeedList[0][i] / 100 % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 6, eatFeedList[0][i] / 1000 % 10);

                }

                wekîdi

                {

                    Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[0][i] % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[0][i] / 10 % 10);

                }

            }

             write_dgus_vp(0x0084, rûpela veguherînê, 2); // Têkeve rûpela tomarê

        }

        //Rrûpela tomar

        din eger (Va == 0x0201) // Rûpelê berê tomar bike

        {

            if( lookEatCnt > 0)

            {

                lookEatCnt--;

                ji bo(i = 0;i

                {

                    eger (i == 0)

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 4, eatFeedList[lookEatCnt][i] / 100 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 6, eatFeedList[lookEatCnt][i] / 1000 % 10);

                    }

                    wekîdi

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                    }

                }

            }

        }

        din eger (Va == 0x0202) // Rûpelê din tomar bike

        {

            if( lookEatCnt

            {

                lookEatCnt++;

                ji bo(i = 0;i

                {

                    eger (i == 0)

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 4, eatFeedList[lookEatCnt][i] / 100 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 6, eatFeedList[lookEatCnt][i] / 1000 % 10);

                    }

                    wekîdi

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                    }

                }

            }

        }

        //Rûpela sazkirinê

        din eger (Va == 0x0302)

        {

            heke (moda dem == 1)

            {

                timeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        din eger (Va == 0x0303)

        {

            heke (moda dem == 0)

            {

                timeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        din eger (Va >= 0x0304 && Va

        {

            u16 guhêrbar[2] = {0x5A01, 19};

            paşPage = 3;

            paşNum = Û;

            setNum = timrIntervalHour[Va - 0x0304];

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

            write_dgus_vp(0x0084, rûpela veguherînê, 2);

        }

        din eger (Va >= 0x030A && Va

        {

            u16 guhêrbar[2] = {0x5A01, 19};

            paşPage = 3;

            paşNum = Û;

            setNum = dema niha[Va - 0x030A];

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

            write_dgus_vp(0x0084, rûpela veguherînê, 2);

        }

        //YEKrûpela daneyê rast bikin

        din eger(Va == 0x0400) //Tesdîqkirin

        {

            u16 guhêrbar[2] = {0x5A01, 0x0000};

            switchpage[1] = paşPage;

            eger(paşPage == 1) // Vegere rûpela statûyê

            {

                cihGramNum = setNum;

                Write_Dgus(0x1140 + 0, cihGramNum % 10);

                Write_Dgus(0x1140 + 2, cihGramNum / 10 % 10);

            }

            din eger (paşPage == 3)

            {

                eger(BaşNum>= 0x0304 && PaşNum

                {

                    u16 hilbijêre = 0;

                    hilbijêre = (paşNum - 0x0304) * 0x10;

                    timrIntervalHour[BaşNum - 0x0304] = setNum;

                    Write_Dgus(0x3010 + hilbijêre + 0, setNum % 10);

                    Write_Dgus(0x3010 + hilbijêre + 2, setNum / 10 % 10);

                }

                din eger (BaşNum >= 0x030A && Hejmara paş

                {

                    u16 hilbijêre = 0;

                    hilbijêre = (paşNum - 0x0304) * 0x10;

                    nihaDem[Numreya paşîn - 0x030A] = setNum;

                    

                    heke (Numreya paşîn == 0x030A)

                    {

                        Write_Dgus(0x3010 + hilbijêre + 0, setNum % 10);

                        Write_Dgus(0x3010 + hilbijêre + 2, setNum / 10 % 10);

                        Write_Dgus(0x3010 + hilbijêre + 4, setNum / 100 % 10);

                        Write_Dgus(0x3010 + hilbijêre + 6, setNum / 1000 % 10);

                    }

                    wekîdi

                    {

                        Write_Dgus(0x3010 + hilbijêre + 0, setNum % 10);

                        Write_Dgus(0x3010 + hilbijêre + 2, setNum / 10 % 10);

                    }

                }

            }

            write_dgus_vp(0x0084, rûpela veguherînê, 2);

        }

        din eger(Va == 0x0401) //Paş

        {

            u16 guhêrbar[2] = {0x5A01, 0x0000};

            switchpage[1] = paşPage;

            write_dgus_vp(0x0084, rûpela veguherînê, 2);

        }

        din eger(Va == 0x0402) //Zêdebûna jimareyî

        {

            setNum++;

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

        }

        din eger(Va == 0x0403) //Kêmbûna jimareyî

        {

            eger(SetNum> 0)

                setNum--;

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

        }

        

        Write_Dgus(0x1000, 0);

    }

}


Dema şandinê: Sep-19-2023