- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 19

Thema: Uhren-Testprogramm funktioniert nicht

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    [QUOTE=HaWe;639090]
    probier's mal mit Abfrage des 1. Zeichens in deinem "String":
    (einfaches Hochkomma für Zeichen, keine Doppel-Anführungszeichen für Zeichenketten!)
    if(Zeit_einlesen[0]=='j') .......

    Danke , das klappt auch!

    Was bedeutet die [0] ??

    vG
    fredyxx

  2. #2
    HaWe
    Gast
    [QUOTE=fredyxx;639092]
    Zitat Zitat von HaWe Beitrag anzeigen
    probier's mal mit Abfrage des 1. Zeichens in deinem "String":
    (einfaches Hochkomma für Zeichen, keine Doppel-Anführungszeichen für Zeichenketten!)
    if(Zeit_einlesen[0]=='j') .......

    Danke , das klappt auch!

    Was bedeutet die [0] ??

    vG
    fredyxx
    strings jeder Art sind grundsätzlich arrays, an jeder Stelle steht ein einzelner Buchstabe.
    Buchstaben sind meist Bytes (unsigned char), bei Arduino seltsamerweise signed char (auf anderen Systemen oder als Steuerzeichen auch teilw. int, führt hier aber zu weit ).
    Die Nummerierung startet in C mit der Null, daher ist array[0] die erste "Zelle", array[1] die 2., usw., bei einem string oder array der Länge n ist also array[n-1] der letzte Buchstabe, der direkt zum string gehört.
    Es folgen dann bei C-strings noch das terminierende Byte 0 ( '\0'), und ggf voher noch das "Enter-Zeichen" (carriage-return, line-feed), wenn du nach deiner string-Eingabe am Schluss die Enter-Taste gedrückt hast, in C auf AVR und ARM und Linux ist das das '\n' (alles andere führt hier zu weit).
    \0 ist der ASCII-Wert 0, nicht das Zahlsymbol 0,
    \n ist der ASCII-Wert 10.

    Für dich ist vor allem wichtig, dass wenn du nur 1 Zeichen per Serial eingibst und mit ENTER abschließt, dieses Zeichen an der 1. Array-Stelle gespeichert wird, also array[0], und dass aber noch weitere Steuerzeichen folgen können, die das System drangehängt hat.

    (edited: )
    Leider kann man sich aber (wie erwähnt) bei Arduino nie recht drauf verlassen, was das alles genau ist. Wenn du also ein 'j' eingibst + ENTER, kann dein String-array so aussehen
    j \0
    -oder-
    j \n \0
    -oder (passiert, wenn man lange genug wartet bevor man dann irgendwann ENTER drückt), auch nur:-
    j
    - IMMER aber steht das j an 1. Stelle, also in der Zelle array[0].


    ANSI C- oder C++ -Funktionen entfernen oder verarbeiten die string-Steuerzeichen mit ihren recht gut dokumentierten Standard-Funktionen, Arduino verwendet dazu die seltsam-verqueren und nicht bis maximal hundsmiserabel dokumentierten String-Class Funktionen wie trim().
    Geändert von HaWe (15.09.2017 um 18:01 Uhr)

Ähnliche Themen

  1. atmega32 führt testprogramm nicht aus
    Von exzoys im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 01.02.2011, 10:08
  2. Testprogramm läuft nicht
    Von 9999 im Forum Robby RP6
    Antworten: 24
    Letzter Beitrag: 30.05.2009, 17:05
  3. Testprogramm funktioniert nicht!
    Von Gillich im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 2
    Letzter Beitrag: 04.04.2008, 23:49
  4. Testprogramm für rn Control funktioniert nicht richtig
    Von thdrummer im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 1
    Letzter Beitrag: 26.02.2007, 15:18
  5. Genauigkeit von Uhren
    Von orph im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 25.09.2006, 16:48

Berechtigungen

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

LiFePO4 Speicher Test