delay - Befehl

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo zusammen,
    ich habe in meiner Heizungssteuerung den Befehl delay(500) verwendet. Klappt dort hervorragend.
    Bei einem Testprogramm auf einer anderen Raspi wollte ich den Befehl auch einsetzen. Dort bekomme ich aber die Fehlermeldung:

    error: ´delay´ was not declared in this scope


    ich habe oben als include iostream, stdlib.h, time.h, wiringPi.h, und wiringPiI2C.h ausprobiert. Das sind die gleichen, die ich bei der Heizungssteuerung auch verwendet habe. Trotzdem die Fehlermeldung.

    Vorschläge???

    Einmal editiert, zuletzt von hunter_spike (16. März 2017 um 21:43)

  • Wie gesagt, die include hab ich nach und nach dabei geschrieben, weil die bei meiner Heizungssteuerung auch drin sind und da funktioniert das delay.

  • #include <wiringPi.h> daklariert den Prototypen für "delay" und zwar ohne nenneswerte Bedingungen (siehe https://git.drogon.net/?p=wiringPi;a=…d111952a8f74e15).

    Hier kann eigentlich nur eine korrumpierte wiringPi.h die Ursache sein, oder Du lädst eine andere Datei gleichen Namens, welche im Suchpfad vor derjenigen steht, welche Du denkst zu inkludieren. Schreib mal in wiringPi.h ein paar ungültige Zeichen rein und schaue, ob der Compiler sie anmeckert. Falls nicht, dann inkludierst Du eine andere Datei gleichen Namens aber mit anderem Inhalt.


  • Servus,
    hast Du mal das Makefile dazu? Oder wie übersetzt Du das Ganze?

    cu,
    -ds-

    Makefile??? Was ist das?
    Ich hab das mit nano geschrieben und danach mit

    Code
    $ sudo g++ hallo_welt.cpp -o hallo_welt


    compiliert.

    Danach mit ./hallo_welt ausgeführt.

    Statt g++ geht auch gcc. ist da ein Unterschied?
    Automatisch zusammengefügt:


    #include <wiringPi.h> daklariert den Prototypen für "delay" und zwar ohne nenneswerte Bedingungen (siehe https://git.drogon.net/?p=wiringPi;a=…d111952a8f74e15).

    Hier kann eigentlich nur eine korrumpierte wiringPi.h die Ursache sein, oder Du lädst eine andere Datei gleichen Namens, welche im Suchpfad vor derjenigen steht, welche Du denkst zu inkludieren. Schreib mal in wiringPi.h ein paar ungültige Zeichen rein und schaue, ob der Compiler sie anmeckert. Falls nicht, dann inkludierst Du eine andere Datei gleichen Namens aber mit anderem Inhalt.

    Gerade habe ich gesehen das ich, wenn ich die wiringPi.h mit dazu nehme eine andere Fehlermeldung bekomme.

    undefined reference to ´delay´
    collect 2: error: ld returned 1 exit status

    Aber wenn das an der wiringPi liegen würde, dann gäbe es doch keinen delay-Befehl, wenn die nicht aufgerufen wird. Wie macht man denn dann in c++ eine Verzögerung?

    Einmal editiert, zuletzt von hunter_spike (17. März 2017 um 13:40)


  • ...

    Code
    $ sudo g++ hallo_welt.cpp -o hallo_welt


    ...

    da fehlt die Library mit dem delay() ... Wozu übrigens das sudo?
    Na egal, Du musst die wiringPi Library mi angeben, also:

    Code
    $ sudo g++ hallo_welt.cpp -o hallo_welt -lwiringPi

    Findest Du aber sicher auch auf der wirinigPi Homepage ...

    cu,
    -ds-

  • Servus,


    ...Bleibt die Frage, das es ohne wiringPi keine "delay" gibt.

    welche Frage?
    In den Linux C-systemcall gibt es keine Funktion delay() ...
    Es gibt u.a. sleep() ( -> man sleep <-), usleep() ( -> man usleep <- ) und nanosleep() ( -> man nanosleep <- ) ...

    Das sollte in den meisten Fällen ausreichen ;)

    cu,
    -ds-


  • Servus,

    welche Frage?
    In den Linux C-systemcall gibt es keine Funktion delay() ...
    Es gibt u.a. sleep() ( -> man sleep <-), usleep() ( -> man usleep <- ) und nanosleep() ( -> man nanosleep <- ) ...

    Das sollte in den meisten Fällen ausreichen ;)

    cu,
    -ds-

    Tja, was soll ich sagen. Wie erwartet funktioniert Dein Tip.
    Ich hab mir mal noch zwei Bücher bestellt um solche "Kleinigkeiten" (welchen include bei welchem Befehl) selber lösen zu können.

    Danke Dir. :danke_ATDE:

    Achim

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!