Archiv verlassen und diese Seite im Standarddesign anzeigen : [GELÖST] Kette_l_bwd = Kettenspeedlinks * -1 nicht möglich?
oratus sum
15.02.2010, 19:41
Hallo,
Ich bekomme ein Fehler bei der Operation:
Kette_l_bwd = Kettenspeedlinks * -1
Beide Variablen sind Integer.
Der Error sagt:
Invald Datatype
Code Umfeld:
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
oratus sum
15.02.2010, 20:19
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.
oratus sum
15.02.2010, 21:21
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...
oratus sum
15.02.2010, 21:28
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
oratus sum
16.02.2010, 22:00
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
guenter1604
17.02.2010, 14:13
Wäre ein
Kette_l_bwd = abs(Kettenspeedrechts)
Kette_r_bwd = abs(Kettenspeedrechts)
nicht schneller und hübscher ?
Günter
oratus sum
17.02.2010, 15:41
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
guenter1604
17.02.2010, 16:20
stimmt! Wenn nicht nur das Minus weg soll ist abs nicht sinnvoll.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.