-
Easy Radio sendet "ER"
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:
Code:
$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
-
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.