PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Steuern über die RS232 (seriell) mit einem String Befehl



Karlonimo
02.01.2008, 16:04
Hallo liebe Forum Freunde,

ich bin jetzt leider in der Suche nicht weiter gekommen und will darum hier meine Frage loswerden. Leider bin ich ein Neuling im Bereich des Programmierens eines Mikrocontrollers über Bascom.

Mein Problem. Ich möchte gern eine LED über die serielle Schnittstelle Ein- und Ausschalten. Ich bekomme dies sehr gut mit dem Befehl INKEY hin.
Das heißt wenn ich ein Byte im Terminalprogramm absende, z.B. "a" dann geht die LED an und wenn ich ein "u" sende dann geht sie aus.

Ich will jedoch ein ganzes Wort schicken also z.B. "LEDan" oder "LEDaus" damit sich was tut.

Habt ihr da eine Idee wie man so etwas lösen könnte.

Vielen Dank

Killer
02.01.2008, 16:19
Ich denke du stellst dir das so vor, dass man das Wort eingibt und zur bestätigung Enter drückt, wodurch das Wort an den µC gesendet wird, richtig?
Ich würde die Buchstaben hintereinander empfangen (mit Handshaking damit nicht irgendwas bei herauskommt) und sobald "Enter" gesendet wird, soll der µC die ganze Sache beispielsweise mit 2 If-Abfragen auswerten.

MfG Killer

PicNick
02.01.2008, 16:22
Na, z.N.

dim befehl as string * 20

INPUT "Wat nu ?", befehl

if befehl = "LEDon" THEN ........

Karlonimo
02.01.2008, 23:21
Hallo nochmal,

danke für die schnellen Antworten.

Also das mit dem INPUT Befehl habe ich mir auch so gedacht. Nur leider funktioniert das nicht so wie ich will. Hab hiermal den Quellcode. Evtl. sieht ja jemand ein Fehler oder weiß was da noch fehlt.

$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600


Dim Text As String * 20
Config Portb = Output

Do
Input "Was" , Text
If Text = "LEDan" Then
Portb.0 = 1
Sound Portb.1 , 300 , 200
End If
If Text = "u" Then
Portb.0 = 0
Sound Portb.1 , 300 , 350
End If
Wait 1
Loop
End

Killer
03.01.2008, 13:45
Hier wird nur der erste Buchstabe vom AVR entgegengenommen! Lass dir mal hinter der Eingabe das Eingegebene ausgeben, also so:


Input "Was" , Text
Print Text


Wenn ich richtig liege dürfte da jetzt nur ein einziger Buchstabe herauskommen.

MfG Killer

Karlonimo
03.01.2008, 16:47
Also das habe ich gestern auch schon so probiert, da das Beispiel in der Bascom Hilfe ja so ähnlich ist.

Es passiert folgendes: Der Text "Was?" wird über das Terminal Programm problemlos ausgegeben. Wenn ich dann meine Eingabe mache und ENTER drücke passiert gar nix.

Ich weiß auch nicht warum. Die Der normale Print Befehl, also einfach
Print "Hallo Welt" oder so etwas funktioniert aber.

Karlonimo
03.01.2008, 16:48
Also das habe ich gestern auch schon so probiert, da das Beispiel in der Bascom Hilfe ja so ähnlich ist.

Es passiert folgendes: Der Text "Was?" wird über das Terminal Programm problemlos ausgegeben. Wenn ich dann meine Eingabe mache und ENTER drücke passiert gar nix.

Ich weiß auch nicht warum. Der normale Print Befehl, also einfach

Print "Hallo Welt"

oder so etwas funktioniert aber.

PicNick
03.01.2008, 16:56
Nur damit es gesagt wurde:
du mußt auf Groß- Kleinschreibung achten, also "LEDan" und "u"

Karlonimo
03.01.2008, 17:16
@PicNick

Ja klaro. Hab ich drauf geachtet. Aber funktioniert trotzdem nicht.

PicNick
03.01.2008, 17:21
Versuch mal, zwecks diagnose


Do
Input "Was" , Text
print "-->"; text ' was ist gekommen
If Text = "LEDan" Then
Portb.0 = 1
Sound Portb.1 , 300 , 200
End If
If Text = "u" Then
Portb.0 = 0
Sound Portb.1 , 300 , 350
End If
Wait 1 ' muß nicht sein , du wartest eh dann auf Input
Loop
End

Karlonimo
04.01.2008, 08:45
Hallo an alle,

also hab das Problem jetzt gelöst. Der Quellcode war nicht der Fehler.
Mein Terminalprogramm scheint wohl für so etwas nicht zu funktionieren.

Ich habe dann das von BASCOM und das WinXP Terminalprogramm genommen und damit läuft es super.


Danke für Eure Hilfe. O:)

Andree-HB
04.01.2008, 08:52
..hier wäre sonst auch noch ein Ansatz :
http://www.pixelklecks.de/1f40e2973f0cb1401/84889198e011d190c/index.html