hallo,
als erstes solltest du dir die funktion Pollswitch() noch einmal genauer ansehen (asuro manual abschnitt 9.2.12.). dann solltest du sehen dass im anfangspost der ausdruck
PollSwitch()==1
nicht dann wahr ist wenn irgendein taster gedrückt ist, sondern nur wenn K6 (und kein anderer gleichzeitig) gedrückt ist. der else block (vorwärtsfahrt) sollte also eigentlich entgegen deiner angabe auch ohne drücken eines tasters ausgeführt werden...!?
weiters siehst du dass PollSwitch ein unsigned char als ergebnis liefert, das sollte dich bei den 'letzten unklarheiten im code' weiterbringen.
das ist eine gute frage auf deren antwort ich auch gespannt bin. eigentlich sollteWieso schreibt man eigendlich
if (t1==0 && t1==t2)
if (t1==0 && t2==0)
performanter sein. du kannst auch
if (PollSwitch() == 0 && PollSwitch() == 0)
schreiben, dann sparst du dir die (expliziten) variablen.
t steht vermutlich kurz für temp, eine beliebte möglichkeit fehleranfälligen code zu provozieren. man sollte besser möglichst aussagekräftige variablennamen wählen um den code möglichst les- und wartbar zu halten. auch ist temp ansich wenig aussagekräftig. trotzdem ist die verwendung von solchen nicht-aussagekräftigen bezeichnern in codeschnipseln eines forumsbeitrags üblich und auch praktikabel, da es sich ja meist um eine überschaubare anzahl an codezeilen handelt.Und warum kürzt ir PollSwitch mit t ab was hat das für ein sinn
EDIT:
ich sehe gerade dass der code immer noch nicht funktioniert. und ich hätte da eine vermutung warum das so ist:
da PollSwitch ja beim ersten aufruf (t1) vermutlich einen falschen wert leifert wird PollSwitch ein weiteres mal aufgerufen (t2), was den korrekten wert liefern soll. also können t1 und t2 nur dann gleich sein, wenn beide ergebnisse richtig, oder beide falsch sind, und dem ist offenbar nicht so.
also sollte man so vorgehen:
Anmerkung: da ein richtiges ergebnis von PollSwitch vom ladezustand eines kondensators abhängt, kann es laut asuro manual auch mehrere PollSwitch aufrufe benötigen um ein korrektes ergebnis zu erhalten. ggf also so etwas:Code:PollSwitch(); //das erste ergebnis interessiert nicht, da ohnehin falsch if (PollSwitch() == 0) { //... }
oder auch so:Code:for (int i = 0; i < 4; i++) { PollSwitch(); } if (PollSwitch() == 0) { //... }
lgCode:PollSwitch(); PollSwitch(); PollSwitch(); PollSwitch(); if (PollSwitch() == 0) { //... }







Zitieren

Lesezeichen