PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu Bascom



wolper
21.12.2008, 21:28
Hallo

Bin grad am Programmieren eines 20 Kanal-Ir-Empfängers (RC-5 Code). Der Empfänger funktioniert auch ohne weiteres(Zahlen 0-9, Play,Pause etc..) Nun möchte ich aber Zahlen eingeben von 0-99, hierzu will ich das Toggle-Bit auslesen was auch noch ohne weiteres funktioniert, mein Problem liegt nun aber darin, dass wenn 2 Tasten gedrückt worden sind zb 1 und 9 (welche in Variablen zb. Command 1 u. Command2 gespeichert worden sind) ich diese zusammenzufügen möchte zu z.B. 19, ich bin mir sicher das der Befehl sehr einfach dafür ist, aber irgendwie will ich nicht dahinter steigen. Ich hoffe ihr könnt mir helfen

MfG
wolper

linux_80
22.12.2008, 00:37
Hallo,

die einzelnen Werte sind ja als Zahl vorhanden, also als Byte-Wert, diese kann man einfach zusammenzählen:
Cmdges = Cmd1 * 10 + Cmd2

In Bascom wird man das aber noch aufteilen müssen, da nur eine Rechnung pro Zeile geht.

Wenn Du einen String haben möchtest, geht das mit
S = Str(Command)
danach beide Werte zusammenhängen.

wolper
22.12.2008, 08:00
Danke für die Antwort, hab mir schon gedacht das des wirklich einfach gehalten ist.
Hab das jetzt mal fertig geschrieben, vll könnte einer von euch schnell einen Blick drüber werfen ob das so funktionieren würde/könnte?!
(sitz gerade in der Arbeit und kann das leider nicht testen)Vielleicht ist ja ein gröberer Fehler vorhanden, den man auf dem ersten Blick erkennt und ich den vor dem ersten Testen noch ausmerzen kann.



Do

Zahl1 = 0

Getrc5(address , Command) 'lese Adresse und Kommando von TSOP

If Address < 255 Then

Toggold = Command.7 ' Toggle Bit merken
Command = Command And &B01111111 'lösche Toggle-Bit
Command = Command1

Do

Getrc5(address , Command)
Command = Command And &B01111111
Incr Zahl1
Waitms 1
Loop Until Zahl1 = 500

Togg = Command.7
If Togg <> Toggold Then
Cges = Command1 * 10
Cges = Command1 + Command
Cges = Command
Else
Goto Commandabfrage
End If

Commandabfrage:
If Command = 12 Then
Toggle Porta.0
End If
Waitms 40

End If 'warte 40 Millisekunden
Loop
End

Variablen Zuweisung, Output/Input Config etc. ,hab ich mal rausgelassen das es sich schöner lesen lässt

MfG
wolper

linux_80
22.12.2008, 10:11
Moin,

das hier hat so noch keinen praktischen nutzen:

Cges = Command1 * 10
Cges = Command1 + Command
Cges = Command

es muss in jeder Zeile schon das Ergebnis von der vorhergehenden Zeile verwendet werden.


Cges = Command1 * 10
Cges = Cges + Command

wolper
22.12.2008, 10:19
Hallo,

Danke für die Hilfe, da hast du natürlich recht, dummer Fehler!

hab es jetzt abgeändert zu


Cges = Command1 * 10 ' erste Taste * 10 u. Ergebniss in Cges schreiben
Cges = Cges + Command ' erste Taste + zweite Taste Ergebniss in Cges schreiben
Command = Cges ' Ergebniss Cges wird in Command geschrieben


Ich werde das Programm heute Abend testen, sobald ich aus der Arbeit heimkomm. Werde dann mein Ergebniss posten.

MfG
wolper