PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Easy Radio sendet "ER"



toter_fisch
03.03.2012, 10:28
Hallo, ich habe ein Problem mit dem EasyRadio. Ich habe eins am PC und eins am Roboter.
Nun kann ich am Roboter "Hello" senden und ich empfange es am PC. Wenn ich nun aber einen Befehl zum Board senden will, kommt am Anfang erstmal ER. Dann wird der Befehl mal empfangen, mal nicht, mal kommen Zahlen zurück und manchmal startet das EasyRadio neu. Die EasyRadios sind beide richtig konfiguriert.
Hier mal der Code für das Controller-Board:



$regfile = "m32def.dat"
$crystal = 8000000
$baud = 19200




Dim Befehl As String * 2


Declare Sub 10()






'---> einstellungen für easyradio <---------------
Print "ER_CMD#U4"
Waitms 100
Print "ACK"
Wait 1
Print "ER_CMD#H2"
Waitms 100
Print "ACK"
Waitms 500
Print "ER_CMD#P9"
Waitms 100
Print "ACK"
Waitms 500
Print "ER_CMD#C7"
Waitms 100
Print "ACK"
Waitms 500
Wait 1






'systembereitschaft anzeigen


Print "test.."
Wait 1
Print "ready!"






Do
Print "Hello"
Input Befehl
If Befehl = "10" Then
Call 10()
Else
befehl = ""
Loop








Sub 10()
Print "that was 10!"
befehl = ""
End Sub
End If


Ich denke der Fehler liegt am Code. Wie kann ich den Controller so programmieren, das er z.B. beim Befehl "10" ein "OK" als Bestätigung zurückgibt?
Gruß toter_fisch

Kampi
03.03.2012, 11:26
Hi,

ich denke dein Problem wird der "Print" Befehl sein.
Wenn du dir mal den "Print" Befehl anschaust (Hallo Welt Programm auf den Controller machen und den Empfang analysierst du dann mit z.B. HexTerm) wirst du sehen das ein 'Print "Hallo Welt" ' folgendes sendet:

Hallo Welt + CR(0x0D) + LF (0x0A)

Ich denke dein Modul kommt damit durcheinander, weil es NUR einen Textbefehl erwartet (z.B. ER_CMD#U4).
Das ist beim senden eines Textes warhscheinlich nicht schlimm, weil du damit nicht die Einstellungen des Moduls ändern willst. Im normalen Sendebetrieb sendet das Modul das was in ihm reingeschoben wird.
Wenn du aber die Einstellungen ändern willst (quasi die Register beschreibst) dann könnte es sein, dass das Modul durch das CR + LF durcheinander kommt, weil es die Befehle nicht versteht.

Probier mal die Befehle so zu übermitteln:

Print ER_CMD#U4;

Mit einem ; am Ende des Befehls wird kein CR und LF übermittelt.