PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rs232 Richtungsänderung beim RN-MotorControl



visualman
26.02.2007, 17:45
Hallo,

ich versuche über RS232 dem RN-MotorControl Rev 1.3 mit RNV2-DualMotor zu sagen, dass es links bzw. rechts rum drehen soll. Aber leider nimmt er diesen Befehl nicht an. Der Befehl für die Geschwindigkeit funktioniert. Was ich wiederum nicht verstehen kann, weil ich da ja nur den Befehlscode ändere.

Ich habe mir diese drei Funktionen geschrieben. Wie gesagt die Variante für setMotorspeed() funktioniert.



#define waitAfterSend 1
#define waitAfterCheck 1
#define Timeout 10

char waitForRCV(int ms){
char c;
int i=0;

while(!((c=uart_getc()) & UART_NO_DATA)){
delay1ms(1);
if(++i>=ms) return 0;
}; //TODO 500ms Time out verbessern*/
//c=uart_getc();
return c;
}

int checkResults(){

int error=1;

char result[9];
int i=1;
result[0]=waitForRCV(Timeout);//warten bis erste Z.
while(i<=9){
result[i]=uart_getc();
i++;
if(result[i] & UART_NO_DATA) break;
}

if(result[0]=='9' && result[1]=='9'){
LEDS = resetBit(LEDS,LED3);
error=0;
}else{
LEDS = setBit(LEDS,LED3);
}

if(result[0]=='5' || result[0]=='1' || result[0]=='2' || result[0]=='3' || result[0]=='4'|| result[0]=='6' || (result[0]=='2' && result[1]=='0')){
LEDS = setBit(LEDS,LED4);
}else{
LEDS = resetBit(LEDS,LED4);
}
delay1ms(waitAfterCheck);
return error;
}

void setMotorSpeed(int a,int b){
char res[10];

do{
sprintf(res,"%s%c","##",(char) 3);
sprintf(res,"%s%c", res,(char) 2);
sprintf(res,"%s%c", res,(char) a);
sprintf(res,"%s%c", res,(char) b);
uart_puts(res);
delay1ms(waitAfterSend);
}while(checkResults()!=1);//Solange bis 99 zurück
};

void setDirection(int a,int b){
char res[10];
do{
sprintf(res,"%s%c","##",(char) 3);
sprintf(res,"%s%c", res,(char) 5);
sprintf(res,"%s%c", res,(char) a);
sprintf(res,"%s%c", res,(char) b);
uart_puts(res);
delay1ms(waitAfterSend);
}while(checkResults()==1);//Solange bis 99 zurück
};


Seht ihr noch nen Fehler oder hattet ihr schonmal etwas ähnliches?

Viele Dank für eure Antworten :cry:

visualman
14.03.2007, 08:36
Ich habe den Fehler zwar gefunden, weiß aber nicht wie ich ihn lösen soll.
Der Fehler tritt immer nur auf wenn ich eine Null ( 0 ) über RS232 senden will. Bei der Wahl der Geschwindigkeit kann ich auch keine Null senden.

Wer kennt das Problem.Was kann ich machen.

Gruß