GUI-O Forum

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    UPRAVLJANJE OGREVANJA PREKO INTERNETA - 3. DEL

    Blogs
    1
    1
    155
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • jap
      jap last edited by

      V prvem delu sem postavil osnove: kreiral sem preklopnik na lokalnem GUI-O ter opisal vse potrebne nastavitve, da le ta deluje tudi kot IoT – preko oddaljenega GUI-O. V drugem delu sem doal funkcionalnost termometra, termostata, kreiral ostale grafične elemente, nastavil parametre, slike, video. V tretjem delu pa sledijo popravki, ki sem jih spregledal, a so ravno tako pomembni.

      Določanje formata ekrana ASR.

      Kot sem v prvem delu omenil, je vmesnik za upravljanje vikenda na svoj telefon dobila tudi žena. Na koncu drugega dela sem zapisal svoje zadovoljstvo, ko pa sem videl sliko na ženinem telefonu, pa je bilo jasno, da bo potrebno še kaj postoriti: Izpis temperature UID:lb_tmp je šel preko roba podlage UID:temp_container. Vzrok je v različnih formatih zaslovnov. Žena ima sodobnejši telefon z bolj podolgovatim zaslonom. Posledica je očitna. Grafični elementi, katerih velikost je vezana na pokončno dimenzijo so tu po širini večji. Pri velikosti fonta je to očitno. Pri razvoju sem imel nekoliko smole, ker sem delal na starejšem zasnonu. Načeloma moramo predvideti, kakšen bo format ekrana pri večini uporabnikov. Če delate za trg, svetujem da izberete sodoben format.
      GUI-O aplikacija sledi ukazom ter ne more vedeti, ali gre nekaj čez rob namenoma, ali zaradi drugačnega zaslona. GUI-O določa velikosti glede na uporabljen zaslon, če mu z komando ne določimo formata. Zato je slika, kjer razvijamo vedno skladna z našimi nastavitvami. Rezultat je seveda na različnih zaslonih različen.
      Rešitev je preprosta: Preden začnemo razvijati GUI, oziroma preden določamo W in H parametre grafičnim elementom, moramo fiksirati format ekrana, sicer delamo na lastnem formatu in ga kasneje lahko le potrdimo, ali pa prilagajamo tudi parametre. Najbolje, da izberemo pogosto uporabljen format. Ostali zasloni pa bodo odvečni prostor zapolnili z definirano barvo ozadja. To pomeni, da na bolj podolgovatem zaslonu po višini GUI-O avtomatsko doda spodaj in zgoraj pas barve ozadja tako, da na ekranu dobimo referenčni format. Seveda to velja tudi za odstopanje po širini – širši zaslon dobi pas desno in levo.
      Vsi vmesniki morajo dobiti podatek o referenčnem zaslonu – to je razmerje med stranicami ASR. Podatek lahko preberemo iz tehničnih podatkov zaslona, lahko pa ga dobimo iz ANDROID naprave preko GUI-O vmesnika, če vklopimo Developer mode: Settings menu → Info → 10x pritisnemo na Application version. Odprejo se nove nastavitve, ki so namenjene razijalcu. Developer mode lahko nato s tem istim vmesnikom izklopimo. Tu se tudi izpiše ASR našega aparata.

      V inicializacijo sem takoj za @cls\r\n doadal @guis ASR:0.5625\r\n
      Seveda je potrebno format določiti tudi na oddaljenih GUI-O: @guis ASR:0.5625 PUB:""\r\n

      In ženin GUI-O je dobil zgoraj in spodaj bel rob. Obe sliki: na mojem telefonu in ženinem telefonu sta sedaj enaki.

      Zatemnitev ekrana

      Naslednji problem, popolnoma uporabniške narave. Žena se je pritožila, da lokalni GUI-O ponoči sveti ter zato ne more spati. Seveda sem problem rešil. Naredil sem zatemnitev ekrana.
      V drugem delu bloga sem naredil različna vmesnika: na oddaljenem vmesniku je dodan gumb BT UID:bt1 ..., s katerim lahko pogledamo trenutno temperaturo. Termometer oziroma uP proti mqtt serverju ne oddaja stalno temperature, da po nepotrebnem ne povzročam podatkovni promet. Tega BT na lokalnem GUI-O ni.
      Na to isto mesto na lokalnem GUI-O sem postavil drug |BT UID:bt2 ..., s katerim zatemnim ekran. V inicializacijo lokalnega GUI-O sem dodal:

      sendstr2("|BT UID:bt2 X:90 Y:57 W:15 H:8 BGC:#a4d4e2 SBGC:#54b2cd RAD:3 SHE:1 SHHR:1 SHVR:1 SVAL:\"tipkal\" FSZ:10 TXT:\"<b>ZA</b>\"\r\n"); //na gump na lokalnem GUI-O se izpiše ZA - zaptemnitev
      

      Zatemnitev je zelo preprosta: Kot odziv na novo inicializiran @bt2 1\r\n pobrišem celoten ekran lokalnega GUI-O ter na sredino postavim nov velik (preko celega ekrana) BT bt3 ..., kjer določim vse barve črne.

      else if (!strcmp(argument[0],"@bt2")) { //javil se je nov gumb na lokal GUI-O 
        sendstr2("@cls\r\n");     //brisanje celega ekrana - vsi GUI elementi
        sendstr2("@guis ASR:0.5625 BGC:#000000\r\n"); //format ekrana
        sendstr2("|BT UID:bt3 X:50 Y:50 W:110 H:110 FGC:#000000 BGC:#000000 SBGC:#000000 SVAL:\"tipka3\" FSZ:10 TXT:\"\"\r\n"); //gumb - črn ekran
      

      }

      Odziv na @bt3 1\r\n pa je ponovna inicializacija celotnega vmesnika, ki jo izvedem na enak način, kot po nalaganju SW.

      else if (!strcmp(argument[0],"@bt3")) { //če pritisnem na črn ekran
           init_request = 1;  //dogodek, ki v procesing() proži reinicializacijo enako, kot @init
           processing();       //analiza, ki jo sicer proži \n\r – zaključen string					
      	    }
      

      Projekt je zaključen, HW je instaliran na vikendu. Popravki in nove funkcionalnosti bodo v nadaljevanjih verjetno na novem HW. Če imate kakorkoli probleme, pa le pišite. Možnosti rešitev je več in več ljudi več ve.

      1 Reply Last reply Reply Quote 0
      • First post
        Last post