Sestaveni dinamického pole a načítání ruzně velkých dat do něj

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
ijacek007
Příspěvky: 2
Registrován: 08 pro 2018, 21:17
Reputation: 0

Sestaveni dinamického pole a načítání ruzně velkých dat do něj

Příspěvek od ijacek007 » 08 pro 2018, 21:20

Zdravím nějakou dobu se mi nedaří elegantně vyřešit problém dinamického přiřazení do pole. Najde se někdo kdo by mi byl schopný pomoci?

V ESP8266 načítám pomocí
<ESP8266HTTPClient.h>
<ArduinoJson.h>

data z webu ktere chci poté zobrazit na displeji mudulu

řetězec vypada nějak takto

{"rychlost":"5000","opakovani":"3","pocet":"4","n1":"Anetka","d1":"25.70°C +","n2":"kotel","d2":"57.56°C +","n3":"venku","d3":"3.20°C","n4":"Cas","d4":"20:41"}

Posilam parametry rychlost , opakovani , pocet a poté již samotné informace na displej kdy je vždy tvar nazev je n+číslo data z něj jsou d+číslo

na displeji tedy chci zobrazit 4 udaju z ukázky a to presneji teploty a cas ktere se co 5 vteřin překleslý a co 3 opakování načtou znovu.

Umím programem zobrazit všechny zaslane proměné problém je že je musím definovat ručně. Nemužu tedy na straně serveru ovlivnit že bych chtěl aktuálně posílat jen 3 místo 4 obrazovek aniž bych zase nepřeprogramoval celý displej.

Kód: Vybrat vše

       Serial.println("Vypisuji hodnoty na e-ink displej");
        float rychlost = json["rychlost"].as<float>();
        byte opakovani = json["opakovani"].as<byte>();
        byte pocet = json["pocet"].as<byte>();
/**/
        String  n1 = json["n1"].as<String>();
        String  d1 = json["d1"].as<String>();
        String  n2 = json["n2"].as<String>();
        String  d2 = json["d2"].as<String>();
        String  n3 = json["n3"].as<String>();
        String  d3 = json["d3"].as<String>();
        String  n4 = json["n4"].as<String>();
        String  d4 = json["d4"].as<String>();

/*
  
        int jmeno[pocet];
        int data[pocet];
        
        for(poc=0;poc<pocet;poc++){

        String text1 = String(poc) ;    
        String text2 = String("n");        
        String text3 = text2 + text1;   // spojeni retezcu

        String text4 = String("d");        
        String text5 = text4 + text1;   // spojeni retezcu


        String  ndp = json[text3].as<String>();
        String  ddp = json[text5].as<String>();
           
        char jmeno[poc] =  ndp;
        char data[poc] = ddp;
        
        }
          
*/

         for(poc=0;poc<opakovani;poc++){  
          
          // předelat na ciklus !

  /**/
         display.clear();  // clear the display
         display.setTextAlignment(TEXT_ALIGN_RIGHT);
         lcddata(String(n1),String(d1));
         display.display(); 
         delay(rychlost);
        
         display.clear();  // clear the display
         display.setTextAlignment(TEXT_ALIGN_RIGHT);
         lcddata(String(n2),String(d2));
         display.display(); 
         delay(rychlost);

         display.clear();  // clear the display
         display.setTextAlignment(TEXT_ALIGN_RIGHT);
         lcddata(String(n3),String(d3));
         display.display(); 
         delay(rychlost);

          display.clear();  // clear the display
         display.setTextAlignment(TEXT_ALIGN_RIGHT);
         lcddata(String(n4),String(d4));
         display.display(); 
         delay(rychlost);
   
    
    /**/    
        
        } 
Má otázka tedy zní jak dinamicky načítat data do pole a poté je z něj jednoduše zobrazovat? nejsem schoplný udělat cykl který by dinamicky vytvářel proměné a do nich načítal obsah ty poté vložil do pole. Mohl by mi někdo proísm poradit kde proklatě dělám chybu ?
Bloger a nadšený amaterský programátor nejen elektroniky. Všechny mé články o Arduinu najdete na mém blogu https://blog.ijacek007.cz/Arduino

ijacek007
Příspěvky: 2
Registrován: 08 pro 2018, 21:17
Reputation: 0

Re: Sestaveni dinamického pole a načítání ruzně velkých dat do něj

Příspěvek od ijacek007 » 09 pro 2018, 21:46

Tak jsem na to nakonec přišel sám. Stačilo se na problém podívat z jiného uhlu. Snažil jsem se dinamicky generovat proměné a dinamicky je plnit obsahem abych jejich obsah poté zase dinamicky vypisoval. Přitom stačilo jen tvtořit cikl dinamicky proměné pojmenovat a jejich obsah poslat rovnou na displej. Kdyby někoho zajímalo řešení které je aktuálně univerzální aď displeji pošlete 3 nebo 5 polí pro zobrazení přikládám jej.

Kód: Vybrat vše

 float rychlost = json["rychlost"].as<float>();
        byte opakovani = json["opakovani"].as<byte>();
        byte pocet = json["pocet"].as<byte>();

         for(poc=0;poc<opakovani;poc++){  
          
          // předelat na ciklus !

          for(poc=1;poc<(pocet+1);poc++){ 
     
           String text1 = String(poc) ;    
           String text2 = String("n");        
           String text3 = text2 + text1;   // spojeni retezcu
           String text4 = String("d");        
           String text5 = text4 + text1;   // spojeni retezcu

          display.clear();  // clear the display
          display.setTextAlignment(TEXT_ALIGN_RIGHT);
          lcddata(String(json[text3].as<String>()),String(json[text5].as<String>()));
          display.display(); 
          delay(rychlost);
        
          
          }

        
        } 
Bloger a nadšený amaterský programátor nejen elektroniky. Všechny mé články o Arduinu najdete na mém blogu https://blog.ijacek007.cz/Arduino

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů