Moin,
Ich bin zurzeit dabei meinen ersten Bot aufzubauen und versuch grad den
Fahralgorithmus zu schreiben.
Also theoretisch sollte das so funktionieren.
Ich hab eine Sub in die ich 4 Werte übergeb:
direc_l (Richtung für linke Raupe, 0 = rückwärts, 1 = vorwärts)
pwm_l (Pwm für linke Raupe, 3 stelliger Wert)
direc_r (Richtung für rechte Raupe, 0 = rückwärts, 1 = vorwärts)
pwm_r (Pwm für rechte Raupe, 3 stelliger Wert)
Soweit die Theorie, nur die Praxis sieht anders aus.
Das ganze möchte ich nun über den Uart Steuern, also hab ich mir
folgendes "Protokoll" überlegt:
Drive:dirc_l-pwm_l-direc_r-pwm_r
Das kann ich auch Problemlos splitten und bekomm dann die Werte die ich
brauch. Abr jetz fangen die Probleme an, die verschiedenen Variablen
Typen, hier der Code:
Im Anhang die Fehler, und im Code sind die zwei entsprechenden zeilen
mit "E" markiert.
Aber auch wenn ich
If Direc_l = "1" Then Gosub Forward_left gegen
If Direc_l = 1 Then Gosub Forward_left
tausche ändert sich nix.
Hat jemand ne Idee wie ich das in den Griff bekomm?
David
Hallo David,
ich kann zwar kein Basic programmieren, aber die Deklaration und die
Definition Deiner Exc_drive-Methode unterscheiden sich im Typ des ersten
Parameters (direc_l).
Declare Sub Exc_drive(byval Direc__l As String , Byval Pwm__l As String
, Direc__r As String , Byval Pwm__r As String)
Sub Exc_drive(byval Direc_l As Integer , Byval Pwm_l As String * 3 ,
Direc_r As String * 1 , Byval Pwm_r As String * 3)
Ist das vielleicht der gesuchte Fehler?
Ausserdem ist der String-Vergleich mit einem Integer in den mit E
markierten Zeilen eventuell falsch.
Gruss
Micha
Jesus!
Danke skua, da wär ich im leben nich draufgekommen, und schon garnich
das sowas nen Error mit Invalid Datatype verursacht ...
Vielen vielen dank!
Gruß
David
geb ich dann im Simulator folgendes ein:
drive:1-120-1-130
erhalt ich wie gewünscht die Ausgabe:
drive:1-120-1-130
1
120
1
130
D98
120
1
130
Die erste Zeile gibt einfach das zurück was empfangen wurde, dann kommt
die erste Print-Reihe bevor die Sub Exc_drive aufgerufen wird, da
stimmen noch alle Werte, die zweite Print-Reihe erfolgt in der Sub und
gibt die 4 Empfangenen Variablen aus.
Nur bei der ersten (Dirc_l) läuft irgendwas schief und es kommt nur
Müll.
Sieht hier vlt jemand vlt den Fehler?
Also ich nicht, und auch meinem Dad gehts genauso, wir sehen einfach vor
lauter Bäumen den Wald nichmehr ...
Wahrscheinlich ist der $FrameSize zu klein.
Bei so langen Strings wirst du mehr brauchen.
Ich würde die Werte auch in dein Programm schreiben, damit sind sie
klar.
Vielen vielen dank für die Antwort, hat mir weitergeholfen!
Also als erstes hab ich Framesize mal auf 40 gesetzt, keine Veränderung.
Dann bin ich mit HW-Stack auf 45 und mit dem SW-Stack auf 16.
Und Tada, läuft wunderbard, wieder was dazugelernt :)
Vielen vielen dank, somit steht morgen einer ersten Testfahrt mit meinem
Bot nichts mehr im weg :)