- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Wert in Variable einlesen ?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    NRW
    Beiträge
    62

    Wert in Variable einlesen ?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    möchte über eine Infrarot Fernbedienung eine Tel Nr. als eine Reihe von Zahlen eingeben ,die dann in einer Variablen festgehalten wird.
    Wie gestalte ich nun die Abfrage um mehre hintereinander eingegebene Zahlen in einer Variable zu speichern.

    gruß Nase

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    39
    Beiträge
    647
    Wie werden die Zahlen denn weiter verarbeitet?

    Ich würde es mit einem Array machen. Sonst kannst du das auch in ein String schreiben.

    Mit nem Array kannst du eine einfache Schleife machen und immer einen hochzählen.
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    NRW
    Beiträge
    62
    Also ich will per Infrarot Fernbedienung eine Telefon Nr. eingeben , dann diese Nr. z.B auf dem PC ausgeben, oder in meinen Fall mit einem angeschlossenen Handy eine Nummer anrufen.
    Dazu brauche ich eine Variable in der die gesammte Nr. enthalten ist .!!

    mfg nase

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Hallo!

    Am einfachsten wäre es für mich (ASMan) als in ausreichenden Array ablegbaren String mit variabler Länge und gezeichnetem Ende zu machen.
    Geändert von PICture (11.05.2013 um 12:19 Uhr)
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    39
    Beiträge
    647
    Ja Array. Wie werden die Daten denn von dem Handy erwartet? Wie überträgst du sie? Über Uart?
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    NRW
    Beiträge
    62
    Zitat Zitat von DanielSan Beitrag anzeigen
    Ja Array. Wie werden die Daten denn von dem Handy erwartet? Wie überträgst du sie? Über Uart?
    Ja über UART.

    Ich will mehrere Werte in einer Variablen zusammen fassen, und das soll in Bascom geschehen.
    Also wenn mir jemand einen Beispiel Code mit Erläuterung geben könnte wäre das schon ein feine Sache.


    Und was das Array betrifft, so kann ich damit nix anfangen , will ja keine Variable einfach nur hoch zählen.

    mfg Nase

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    39
    Beiträge
    647
    Dann geh doch mal auf die Bascom Website und guck dir in der Hilfe das Kapitel zu Arrays an. Vorher würde ich dir noch ein paar Grundlagen zu Arrays empfehlen -> Wikipedia sollte da erstmal reichen.

    Alternativ kannst du's auch so machen: (Achtung pseudo Code)
    Code:
    int telnr
    int nr
    
    while
    get nr //Zahl von der IR Schnittstelle einlesen
    telnr = telnr * 10 + nr
    end
    Das ist jetzt nicht vollständig durchdacht. Die erste Nummer zb. ist ein Sonderfall. Die Lösung ist aber nicht schön finde ich. Mit nem Array geht das besser.
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    NRW
    Beiträge
    62
    Zitat Zitat von DanielSan Beitrag anzeigen
    Dann geh doch mal auf die Bascom Website und guck dir in der Hilfe das Kapitel zu Arrays an. Vorher würde ich dir noch ein paar Grundlagen zu Arrays empfehlen -> Wikipedia sollte da erstmal reichen.

    Alternativ kannst du's auch so machen: (Achtung pseudo Code)
    Code:
    int telnr
    int nr
    
    while
    get nr //Zahl von der IR Schnittstelle einlesen
    telnr = telnr * 10 + nr
    end
    Das ist jetzt nicht vollständig durchdacht. Die erste Nummer zb. ist ein Sonderfall. Die Lösung ist aber nicht schön finde ich. Mit nem Array geht das besser.
    Erst einmal Danke , werde mich mal damit befassen und auch deinen Pseudo Code testen !!


    mfg Nase

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    52
    Beiträge
    765
    Die Variable telnr wird überlaufen.

    Wie geschieht denn die IR-Abfrage?

    Nimm, wie schon erwähnt, ein Array.
    Wenn die IR-Abfrage (Fernbedienungsroutine) per Interrupt z.B. die letzte Ziffer in der Variablen neueziffer ablegt, dann würde ich es so probieren (nicht getestet!):
    Code:
    $regfile = "m88Adef.dat"
    $baud = 19200
    $crystal = 8000000
    
    
    $hwstack = 160
    $swstack = 100
    $framesize = 100
    
    Dim Position As Byte
    Dim Stelefonnr As String * 15
    Dim Btelefonnr(15) As Byte At Stelefonnr Overlay
    Dim Neueziffer As Byte
    
    
    Gosub Telnrleeren
    
    Do
       Gosub Infrarot
       Gosub Zifferntest
    
    Loop
    End
    
    Zifferntest:
       Select Case Neueziffer                                   'Ziffer 0-9
          Case Is < 10
             Gosub Zifferhinzu
          Case 13                                               'Nummer fertig eingegeben also wählen
             Gosub Nummernwahl
          Case 12                                               'letzte Stelle löschen
             Gosub Zifferweg
          Case 11                                               'alle  Stellen löschen
             Gosub Telnrleeren
       End Select
    Return
    
    Infrarot:                                                   'Wenn nicht per Interrupt
    
    Return
    
    Telnrleeren:
       For Position = 1 To 15
          Btelefonnr(position) = 0                              'Nullbyte signalisiert Ende eines Strings
       Next Position
       Neueziffer = 255
       Position = 0
    Return
    
    Zifferhinzu:
       If Position < 15 Then
          Incr Position
          Neueziffer = Neueziffer + 48                             'ASCii Codes für Zahlen
          Btelefonnr(position) = Neueziffer
       End If
    Return
    
    Zifferweg:
       If Position => 1 Then
          Decr Position
          Btelefonnr(position) = 0
       End If
    Return
    
    Nummernwahl:
       Print "Kommandozumnummerwählen";
       Print Stelefonnr
       Gosub Telnrleeren
    Return
    In der IR-Routine dann einfach die Ziffer direkt in die Variable neueziffer schreiben.
    Wurde OK gedrückt, dann die 13 reinschreiben.
    usw.
    Geändert von peterfido (12.05.2013 um 11:32 Uhr)
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    NRW
    Beiträge
    62
    Code:
    '
    $regfile "m8def.dat"     'Definiert den Atmega als Atmega8
    $crystal = 1000000       'Gibt die Quarzfrequenz an in Herz
    $hwstack = 32            'Default use 32 Hardware reservierte Speicher
    $swstack = 10            'Default Software resvierung Speicher
    $baud = 2400
    
    '---------------------- Config Display ----------------------------------------
    ' Konfiguration fürs Display
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , Rs = Portc.5 , E = Portc.4
    '-------------------------Variable deklarieren -------------------------------
    Dim Adresse As Byte      ' Variable für Infrarot Adresse
    Dim Commando As Byte
    
    Dim Flag As Byte
    Dim Blink_aus As Byte
    Dim Blink_an As Byte
    
    
    '------------------------------- I / O ----------------------------------------
    Ddrd = &B11100000        ' Portd.5-d6-d7 als Ausgang für Leds setzen
    Ddrb.2 = 1               ' BG2 als Ausgang für Display Beleuchtung setzen
    Portb.6 = 1              ' Pull Down setzen für Tastereingang
    
    
    '---------------- Konfiguration für 'IR Eingang -------------------------------
    
    Portb.0 = 1              ' PullUp setzen für Eingangspin IR-Led
    Config Rc5 = Pinb.0      ' Pin für IR Abfrage setzen
    
    '---------------------------------- Interrupts ---------------------------------
    Enable Interrupts        ' Interrups Global freigeben
    
    '------------------------------------------------------------------------------
    
    Cls
    Flag = 1
    Do
    
    '--------------------Ankommendes IR Signal auswerten --------------------------
    Getrc5(adresse , Commando)
    If Flag = 1 Then
    Lcd "Warte auf IR Signal"
    Flag = 0
    End If
    If Adresse <> 255 Then
    Reset Commando.7
    
    Cls
    Flag = 1
    
    End If
    '------------------------
    If Commando = 1 Then Gosub 1
    If Commando = 2 Then Gosub 2
    If Commando = 3 Then Gosub 3
    Cls
    Lcd " Taste=" ; Commando
    Waitms 200
    
    Loop
    
    
    '---------------------- Sub Routinen fuer gedrückte Taste 1 -------------------
    1:
    Portd.5 = 1
    Waitms 500
    Portd.5 = 0
    Return
    
    '----------------------  Sub Routinen fuer gedrückte Taste 2 ------------------
    2:
    Print 2
    
    Portd.6 = 1
    Waitms 50
    Portd.6 = 0
    Return
    '----------------------- Sub Routinen fuer gedrückte Taste 3 ------------------
    3:
    Print 3
    Portd.7 = 1
    Waitms 50
    Portd.7 = 0
    Return
    Geändert von radbruch (13.05.2013 um 17:57 Uhr) Grund: CODE-Tag eingefügt (Letze Ändeung von nase um 17:42)

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. wert einer variable über ht an pc senden
    Von Mk1.12.91 im Forum Asuro
    Antworten: 7
    Letzter Beitrag: 04.06.2010, 20:36
  2. Variable - unerklärlicher Wert (Simulator)
    Von Bloodyben im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 18.09.2008, 16:12
  3. Wert einer Variable zu Programm beginn?
    Von Brantiko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 29.02.2008, 16:49
  4. Variable enthält falschen Wert
    Von contrero im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 14.09.2007, 08:15
  5. Wert einer Variable eingrenzen?
    Von TobiasBlome im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 25.05.2007, 22:15

Stichworte

Berechtigungen

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

Labornetzteil AliExpress