- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 12

Thema: keine vollständige Serial.print Ausgabe

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast

    keine vollständige Serial.print Ausgabe

    hallo ,
    der folgende Code ergibt keine vollständige Serielle Ausgabe
    (original Code von hier, angepasst: https://stackoverflow.com/questions/...r-based-on-lcg)

    Code:
    //********************************************
    // randomize functions
    //********************************************
    
    
    uint32_t getSeed() {
       return  (millis() + analogRead(A0)) ;
    }
    
    
    //-----------------------------------------------------
    // Linear Congruence Generator, LCG   
    //-----------------------------------------------------
    
    static uint32_t   _RandNum_ = 1;
    
    int rand_LCG() {
      uint32_t a = 1103515245ul, c = 12345;
      _RandNum_ = a * _RandNum_ + c; 
      _RandNum_ = (uint16_t)(_RandNum_ / 65536);
      return (_RandNum_ % 32768) ;
    }
    
    
    void srand_LCG(uint32_t seed) {
         _RandNum_ = seed;
    }
    
    
    //--------------------------------------------
    // setup
    //--------------------------------------------
    void setup() {
       
       Serial.begin(115200);
       delay(2000);
       
       Serial.println("starting...");  
       Serial.println();
    
       volatile uint32_t  prng, seed;
       int16_t i;
       char buf[30];
    
       Serial.print("srand_LCG() seed=");
       seed=1;
       Serial.println(seed);  
       srand_LCG(seed);    
       //Serial.println(_RandNum_);
       for(i==0; i<10; i++) {
         prng=rand_LCG();
         Serial.print(i); Serial.print(" "); Serial.println(prng);     
       }
       Serial.println();
    
    
       Serial.print("srand_LCG() seed=");
       seed=2;
       Serial.println(seed);  
       srand_LCG(seed); 
       //Serial.println(_RandNum_);
       for(i==0; i<10; i++) {
         prng=rand_LCG();
         Serial.print(i); Serial.print(" "); Serial.println(prng);   
       }
       Serial.println();
    }
    
    //--------------------------------------------
    // loop
    //--------------------------------------------
    void loop() {
       delay(2000);
    }

    auf dem ESP8266 wird nur die erste, aber nicht die 2. for-Schleife angezeigt, dann hängt er sich auf:
    Code:
    starting...
    
    srand_LCG() seed=1
    0 16838
    1 14666
    2 10953
    3 11665
    4 7451
    5 26316
    6 27974
    7 27550
    8 31532
    9 5572
    
    srand_LCG() seed=2

    auf dem Due aber wird gar keine for-Schleife mehr angezeigt:
    Code:
    starting...
    
    srand_LCG() seed=1
    
    srand_LCG() seed=2
    Wo zum .... steckt der Fehler?

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    So würde ich das machen:
    Code:
    //********************************************// randomize functions
    //********************************************
    
    
    uint32_t getSeed() {
       return  (millis() + analogRead(A0)) ;
    }
    
    
    //-----------------------------------------------------
    // Linear Congruence Generator, LCG   
    //-----------------------------------------------------
    
    static uint32_t   _RandNum_ = 1;
    
    int rand_LCG() {
      uint32_t a = 1103515245ul, c = 12345;
      _RandNum_ = a * _RandNum_ + c; 
      _RandNum_ = (uint16_t)(_RandNum_ / 65536);
      return (_RandNum_ % 32768) ;
    }
    
    
    void srand_LCG(uint32_t seed) {
         _RandNum_ = seed;
    }
    
    
    //--------------------------------------------
    // setup
    //--------------------------------------------
    void setup() {
       
       Serial.begin(115200);
       delay(2000);
       
       Serial.println("starting...");  
       Serial.println();
    
       volatile uint32_t  prng, seed;
       int16_t i;
       char buf[30];
    
       Serial.print("srand_LCG() seed=");
       seed=1;
       Serial.println(seed);  
       srand_LCG(seed);    
       //Serial.println(_RandNum_);
       for(int i=0; i<10; i++) {
         prng=rand_LCG();
         Serial.print(i); Serial.print(" "); Serial.println(prng);     
       }
       Serial.println();
    
    
       Serial.print("srand_LCG() seed=");
       seed=2;
       Serial.println(seed);  
       srand_LCG(seed); 
       //Serial.println(_RandNum_);
       for(int i=0; i<10; i++) {
         prng=rand_LCG();
         Serial.print(i); Serial.print(" "); Serial.println(prng);   
       }
       Serial.println();
    }
    
    //--------------------------------------------
    // loop
    //--------------------------------------------
    void loop() {
       delay(2000); }

  3. #3
    HaWe
    Gast
    warum ist das besser?
    (vorher hatte ich ja int16_t i)

    - - - Aktualisiert - - -

    update:
    komisch, jetzt läuft es auf dem Due auch mit int16_t wie zuvor im ersten Code....
    und auf dem ESP8266 auch ...


    hast du noch was anderes abgeändert?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Nein, habe ich nicht. Deswegen habe ich das Rot markiert.

    "I==0" ist falsch weil "==" ein Vergleichsoperator ist. Bin leider auch schon mindestens einmal drauf reingefallen. Den Typ schreibe ich davor, damit der Compiler weiß, was er genau für eine Variable anlegen soll. Ob das notwendig ist? - Keine Ahnung, schadet aber nicht.

  5. #5
    HaWe
    Gast
    ogottogottogott, dass mir sowas noch passiert ist ...

    aber nein, wenn das int i dafür bereits außerhalb deklariert wurde, muss man das nicht unbedingt innen auch noch mal neu für die Schleife lokal als int deklarieren.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Ich habe nur schnell drüber geschaut und das "int i" außen nicht gesehen. Weil Du das wieder mit Deiner Lieblingsmethode gemacht hast: int16_t i;


Ähnliche Themen

  1. CR nach Serial.print (" xx ");
    Von fredyxx im Forum Arduino -Plattform
    Antworten: 4
    Letzter Beitrag: 02.05.2016, 18:58
  2. Antworten: 16
    Letzter Beitrag: 20.02.2014, 17:15
  3. Print-Ausgabe
    Von DEAF BOY im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 12.12.2010, 20:43
  4. Print Ausgabe bei State Machine
    Von JuergenG im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 08.02.2010, 16:25
  5. Print Ausgabe über RS232 liefert nur Sonderzeichen
    Von Jörg9 im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 6
    Letzter Beitrag: 26.02.2007, 10:44

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad