Normalt att det blir bugg om man anropar funktion i funktion

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Nerre
Inlägg: 27229
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av Nerre »

Al_Bundy skrev: Så lösningen var att ta bort denna rad

Kod: Markera allt

display.print("***FINISH***);
Om den där raden gav felet så beror det nog på att den saknar ett citationstecken...


Det du håller på med är inte att lära dig programmera, du försöker lära dig koda innan du lärt dig programmera.

Att programmera är att "kunna sätta logik på pränt", d.v.s. skriva ner en beskrivning av hur programmet ska fungera på ett strukturerat rätt. Din kod är inte strukturerad, det är spagettikod, sån kod är alltid svår att gör ändringar i och förstå hur den fungerar.

Det du gör är som att försöka bygga ett hus med en tegelsten i ena hörnet och sen jobba sig vidare. Om man istället för en ritning och planerar så blir bygget betydligt bättre. Samma sak med programmering, man gör en "ritning" över hur koden ska fungera och planerar.

Folk har programmerat datorer länge, i stor skala sen 70-talet i alla fall (mycket av grunderna är dock äldre än så). Det finns alltså en massa kunskap om hur man skriver bra program, att helt strunta i att läsa in den kunskapen är respektlöst.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av sodjan »

Jag kanske kan kanske för lite av Arduinos kodsyntax, men jag ser inte
hur kombinationer av "String()" och "+=" ska ge något vettigt resultat.

x += y är ju det samma som x = x + y, så hur ska då
String(first) += String(second) += "?" tolkas?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av Al_Bundy »

Det är två tal jag sätter ihop till en mening. Är inte detta standard i C?

int x = 2;
int y = 4;
int z;

int (String(String(x) += String(y))).toInt() ---> 24

Enkel lösning!
Problemet har löst sig nu. Jag har ändrat och tagit bort lite "display.print()" som jag anses vara lite onödiga. :)

Nu är det sista problemet:
Räkna ut hur lång tid det tar för processorn att läsa av två stycken DS18B20.

Jag har en while loop som ska loppa en gång per minut. Då trodde jag att läsa denna mening tog knappt några sekunder. Men det gjorde det inte.
sensors.requestTemperatures(); // request sensors temperature

Jag hade då skrivit en liten enkel räknare.

Kod: Markera allt

   // time clock
      if (i == 60)
      {
        time++;
        i = 0;
      }
      else
      {
        i++; 
      }
      delay(1000);
För varje gång time ökas med 1+ så visar displayen EN minut mindre.
Men nu behöver jag hjälp med att räkna ut hur lång tid det tar för processorn att räkna tiden det tar för att hämna in information från DS18B20, två stycken faktiskt. Kanske är ointressant.

Efter det ska jag komplettera med en viss delay();

Vet du hur man ska göra? :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av sodjan »

> Är inte detta standard i C?

Tja, fungerar det alltså så som du har skrivit det?
Jag hade förstått det bättre med "+" istället för "+="...
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av Al_Bundy »

Det fungerar med += och jag skulle nog tro att det fungerar också med +.
Det finns sänker 100 stycken metoder till för att lösa detta :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av sodjan »

OK, ser nu att både "+" (string addition) och "+=" (string appending)
är korrekt syntax. Då kan vi glömma det... :-)
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46974
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av TomasL »

Det är två tal jag sätter ihop till en mening. Är inte detta standard i C?
Nej det är det garanterat inte.
t (String(String(x) += String(y))).toInt() ---> 24
Är heller ingen C-syntax.

Det är väl Arduinos hopkok, dvs varken C eller C++, utan en salig blandning av dessa och annat de hittat på själva.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av Al_Bundy »

Du verkar bitter idag Herr'n! :) och även igår, samt förrgår också för att nämna.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46974
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av TomasL »

Jag bitter, knappast.
Det är bara det att det är inte C du skriver, ej heller C++, utan ett saligt hopkok av en massa språk.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av Al_Bundy »

Okej då. Arduinons språk heter wiring om man ska vara exakt. Men det är svårt att låta bli och försöka vara en del av "gänget" om du förstår vad jag menar? :wink:

Jag tror inte Athmel kör rent C heller.
Nerre
Inlägg: 27229
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av Nerre »

Kör du på en ren AVR eller PIC så använder man normalt "ren C" också.

Det ser ut som om Arduinos språk är nån basic-ifierad variant av C...?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46974
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av TomasL »

Atmel använder troligen ingenting.
Det är utvecklaren som bestämmer vilket språk han/hon vill skriva i.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av Al_Bundy »

Nej. Den är inte basic-ifierad variant av C. Den har C-syntaxen, men dock inte printf eller scanf.

Wiring är en vidareutveckling av C-språkdialekterna som används i AVR och PIC.
Liksom...varför krångla till det?

Wiring's syfte är att man ska "wira" ihop saker och ting och det ska göras enkelt.
Arduinos IDE heter egentligen Processing och kommer från Manchester Institute of Technology(MIT).

Även används Arduino i många kurser hos Umeå Universitet och PIC används mindre och mindre. AVR och Arduino är vanligast.
Nerre
Inlägg: 27229
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av Nerre »

Men att addera strängar med + är väl inte standard C?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46974
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Normalt att det blir bugg om man anropar funktion i funk

Inlägg av TomasL »

Nej. Den är inte basic-ifierad variant av C. Den har C-syntaxen, men dock inte printf eller scanf.

Wiring är en vidareutveckling av C-språkdialekterna som används i AVR och PIC.
Nja, Wiring/Processing är en kraftig förenkling av C++ egentligen, + lite annat.

Det är alltså ingen "Utveckling" av C.
Dessutom finns det inga C-dialekter, utan de följer (för det mesta) C-standarden.
Skriv svar