Komisch und wenn ich sowas mache:
Dim Kette_l_bwd As Integer
Kette_l_bwd = -100
sagt er:
StoreBit error
Was bedeutet das?
Hallo,
Ich bekomme ein Fehler bei der Operation:
Kette_l_bwd = Kettenspeedlinks * -1
Beide Variablen sind Integer.
Der Error sagt:
Invald Datatype
Code Umfeld:
Code:Rechte_entfernung = Srf02_entfernung(srf02_slaveid_rechts) 'US Rechts Linke_entfernung = Srf02_entfernung(srf02_slaveid_links) 'US Links 'Ir_front = Getadc(2) 'IR vorn 'Ir_left = Getadc(3) 'IR links 'Ir_right = Getadc(1) 'IR rechts 'Berechnung der Kettengeschwindigkeit Kettenspeedlinks = Linke_entfernung * Convert 'Kette = US Entfernung in cm * 2.55 Kettenspeedrechts = Rechte_entfernung * Convert 'Kette = US Entfernung in cm * 2.55 Kette_l_fwd = Kettenspeedlinks Kette_l_bwd = Kettenspeedlinks * -1 Kette_r_fwd = Kettenspeedrechts Kette_r_bwd = Kettenspeedrechts * -1 Kette_l_slow_fwd = Kettenspeedlinks - 40 Kette_r_slow_fwd = Kettenspeedrechts - 40
Komisch und wenn ich sowas mache:
Dim Kette_l_bwd As Integer
Kette_l_bwd = -100
sagt er:
StoreBit error
Was bedeutet das?
Hallo,
welche Bascom Version hast du denn?
Ich kann dies mit der neuesten Version 1.11.9.8 ohne Fehler kompilieren.
Bei Kette_l_bwd = Kettenspeedlinks * -1 kanns sein, dass Bascom (in älteren Versionen) nicht mit den 2 aufeinanderfolgenden Operatoren klarkommt. Das war (ist immer noch?) ein Nachteil bei Bascom, dass so Dinge wie a+3*5-2 nicht gehen (also nur 1 Operator pro Anweisung).
Über den Umweg x = -1 und danach Kette_l_bwd = Kettenspeedlinks * x müssts mit deiner Version aber gehen.
#ifndef MfG
#define MfG
Ich hab Version:
1.11.9.0
Das kann ich z.b. Problemlos kompilieren:
Dim a As Integer
Dim b as Integer
a= 2.25465
b = a * -1
Das funktioniert...
Das mit dem Umweg war auch mein Tipp werds jetzt testen.
Was ich noch prbioert hab ist, dass ich zur sicherheit Kettenspeedlinks in ein INteger umwandle mittels:
Bei Kette_l_bwd = Int(Kettenspeedlinks) * -1
Da kommt aber wieder StoreBit error, der andere Fehler ist dann weg...
Schreib mal den kompletten Programmcode.
Irgendwie hab ich langsam die Vermutung, dass da weiter oben bei irgend ner DIM o.ä. was faul ist.
edit: jetzt hats irgendwie die Reihenfolge der Beiträge durcheinandergewürfelt...
#ifndef MfG
#define MfG
Wenn ich das so mache wie du:
Minus = -1
'Sensorenabfrage:
Rechte_entfernung = Srf02_entfernung(srf02_slaveid_rechts) 'US Rechts
Linke_entfernung = Srf02_entfernung(srf02_slaveid_links) 'US Links
'Ir_front = Getadc(2) 'IR vorn
'Ir_left = Getadc(3) 'IR links
'Ir_right = Getadc(1) 'IR rechts
'Berechnung der Kettengeschwindigkeit
Kettenspeedlinks = Linke_entfernung * Convert 'Kette = US Entfernung in cm * 2.55
Kettenspeedrechts = Rechte_entfernung * Convert 'Kette = US Entfernung in cm * 2.55
Kette_l_fwd = Kettenspeedlinks
Kette_l_bwd = Kettenspeedrechts * Minus
Kette_r_fwd = Kettenspeedrechts
Kette_r_bwd = Kettenspeedrechts * Minus
bekomme ich wieder den invalid Datatype Error
Okay mein Fehler....
Also ich habe die Variable Kette_l_fwd schon als alias für ein Port verwendet. Klar konnte das nicht funktionieren.
Bei so vielen Variablen Aliasen usw verliert man schon schnell den Überblick
Wäre ein
Kette_l_bwd = abs(Kettenspeedrechts)
Kette_r_bwd = abs(Kettenspeedrechts)
nicht schneller und hübscher ?
Günter
die ABS funktionien liefert doch immer positive Zahlen oder? Ich will ja negative haben.
Mein Sub lautet nämlich
Drive(Byval Speed_l As Integer, Byval Speed_r As Integer)
bei einer negativen Zahl fährt er Rückwärts
Lesezeichen