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.
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
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]
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
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 13: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!
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]
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
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)
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.Code:int telnr int nr while get nr //Zahl von der IR Schnittstelle einlesen telnr = telnr * 10 + nr end
Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]
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!):
In der IR-Routine dann einfach die Ziffer direkt in die Variable neueziffer schreiben.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
Wurde OK gedrückt, dann die 13 reinschreiben.
usw.
Geändert von peterfido (12.05.2013 um 12:32 Uhr)
Wenn das Herz involviert ist, steht die Logik außen vor! \/
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 18:57 Uhr) Grund: CODE-Tag eingefügt (Letze Ändeung von nase um 17:42)
Lesezeichen