daten ist ja ein array, wie du selbst definiert hast. Du brauchst es 1. nicht voher zu füllen und 2. musst du bei deiner If Abfrage auf daten[0] == "r" testen.
Hallo zusammen,
ich habe ein Problem bei der Fernsteuerung meines Asuro per IR
wenn ich nun per hyperterminal ein r sende tut sich an dem Roboter nichts er sendet mit lediglich den Inhalt von daten zurück. Nun weiss ich nicht mehr wie ich da weitermachen soll... er empfangt ja einwandfrei ein r, die bedingung daten == "r" ist aber dennoch nicht WAHR aber trotzdem sendet er ein r zurück ... also was ich meine: an der einen stelle is in daten ein r, an der anderen nicht.Code:#include "asuro.h" int main(void) { char daten[] = "0"; Init(); MotorDir(FWD,FWD); while(1) { SerRead(daten,1,0); if(daten == "r") { MotorSpeed(255,255); } SerWrite(daten,1); } return 0; }
wie bekomme ich es nun hin das er wenn ich per terminal ein r sende auch anfängt zu fahren ?
so long
peer
ps: ich weiss das es bei der bedingten reichweite nonsens ist eine fernbedienung zu programmieren, doch dies hatte ich mir als vorübung vergenommen und bin schon gescheitert =(
daten ist ja ein array, wie du selbst definiert hast. Du brauchst es 1. nicht voher zu füllen und 2. musst du bei deiner If Abfrage auf daten[0] == "r" testen.
www.subms.de
Aktuell: Flaschcraft Funkboard - Informationssammlung
also nun habe ich folgendes ausprobiert bzw an einigen stellen den quellcode abgeändert:
...
SerRead(daten[0],1,0);
if(daten[0] == "r")
...
SerWrite(daten[0],1);
so nun kommt wenn ich per terminal ein r seinde ein + zurück !!! Wieso ?
naja dachte ich mir halb so wild stelle ich das if eben auf ein + um:
if(daten[0] == "+")
aber trotzdem passiert nichts als dass der asuro mir ein + zurücksendet aber trotzdem stehenbleibt!!
Kann jm sagen woran das liegt ?
so long
peer
Hallo peer,
SerRead(&daten[0],1,0) bzw. SerWrite(&daten[0], 1) sollte funktionieren.
Die Funktionen erwarten einen Zeiger auf die Daten.
gruß m.a.r.v.i.n
daten[0] liefert meiner Meinung nach shcon einen Zeiger zurück, da es ein Array ist. Dort bekommt man immer die Adresse, meine ich, oder irre ich mich?
Du musst übrigens ach beachten, dass dein Transciever, jedes zeichen, dass du schickst auch selbst einmal empfängt. Hast du denn bei dir das Echo abgeschaltet? Also ob er es einmal hinschreibt und ob er es dann nohcmal empfängt?
Ich glaube, dass sollte jemand anderes erklärenm, der das kann.
Andun
www.subms.de
Aktuell: Flaschcraft Funkboard - Informationssammlung
hallo,
die sache mit den zeigern hat auch nicht gefunzt.
zu dem echo: wenn ich es mit den zeigern mache kommt wie am anfang rr als ausgabe wenn ich r drücke. wenn ichnehme kommt r+ als ausgabe wenn ich r tippe ... vollkommen komisch das ganze !Code:#include "asuro.h" int main(void) { char daten[] = "0"; Init(); MotorDir(FWD,FWD); while(1) { SerRead(daten[0],1,0); if(daten[0] == "r") { MotorSpeed(255,255); } SerWrite(daten[0],1); } return 0; }
hat denn noch nie jm versucht seinen asuro ferzusteuern? wenn doch würd ich mir sehr gern die codes ansehen.
so long
peer
Hallo peer,
im Asuro SelfTest ist so ein Fernsteuerungsprogramm enthalten. Das File heißt 'PCDemo.c'.
Gruß m.a.r.v.i.n
das is mir ein wenig kryptisch ...
weiss denn niemand den fehler ?
Hallo peer,
ohne es selbst ausprobiert zu haben, versuch doch mal folgendes:
Gruß m.a.r.v.i.nCode:#include "asuro.h" int main(void) { char daten[] = "0"; Init(); MotorDir(FWD,FWD); while(1) { SerRead(&daten[0],1,0); if(daten[0] == 'r') { MotorSpeed(255,255); } SerWrite(&daten[0],1); } return 0; }
JUHU es geeht
danke marvin
war ja ne schwere geburt .. so wie ich das nu verstanden habe bedeuten die & das es sich um einen Zeiger handelt!?
naja nu komm ich erstmal weiter VIELEN DANK
peer
Lesezeichen