Hallo,

ich habe ein kleines Programm – eigentlich ursprünglich als Funktion – geschrieben, welches mit dem Asuro kommunizieren soll. Leider kann man nur einmal unter den Punkten 1 bis 7 Daten eingeben. Wenn man z.B. dann wieder eine 2 für dMotGTol eingibt, dann kommt man nicht mehr zur Eingaberoutine, sondern das Menü läuft wieder durch. Irgend etwas ist falsch…
Kann mir einer weiterhelfen?

Grüße, Hans

Code:
#include "asuro.h" 

int main(unsigned int *PCDaten)
{

	unsigned char cmd, cmd2;
	unsigned int tmpDaten[8];
	int i;
	Init();	
	for(i=0;i <= 6; i++)
	{	StatusLED(RED);
		Msleep (50);
		StatusLED(GREEN);
		Msleep (50);
		tmpDaten[i] = PCDaten[i];
	}

	
	cmd = cmd2 = 255;
	while ((cmd != 'q') && (cmd != 's'))	// ************************************** !!!!!!!!!!!!!!!!!
	{
		SerWrite("\n\r       PC-Menue",17);
		SerWrite("\n\r ====================== ",26);
		SerWrite("\n\r SollMotGeschw.........1: ",28);	PrintInt(tmpDaten[0]);
		SerWrite("\n\r dMotGTol..............2: ",28);	PrintInt(tmpDaten[1]);
		SerWrite("\n\r MotGeschStep..........3: ",28);	PrintInt(tmpDaten[2]);
		SerWrite("\n\r StartWeg..............4: ",28);	PrintInt(tmpDaten[3]);
		SerWrite("\n\r dWegZul...............5: ",28);	PrintInt(tmpDaten[4]);
		SerWrite("\n\r RegelintZeit..........6: ",28);	PrintInt(tmpDaten[5]);
		SerWrite("\n\r ZuFahrendeStrecke.....7: ",28);	PrintInt(tmpDaten[6]);
		SerWrite("\n\r Quit ohne speichern...q  ",28);	
		SerWrite("\n\r Ende mit speichern....s  ",28);
		SerWrite("\n\r             Eingabe ---> ",28);
		cmd = 255;	
		SerRead(&cmd,1,0);	// Daten einlesen
		switch (cmd)
		{
			case '1':
				while (cmd2 != 's')
				{
					SerWrite("\n\r SollMotGeschw (",18); PrintInt(tmpDaten[0]);
					SerWrite(") --->: ",8); 
					cmd2 = 255;	
					SerRead(&cmd2,1,0);	// Daten einlesen
					switch (cmd2)
					{
						case '8': 	tmpDaten[0] = tmpDaten[0] + 10;
									break;
						case '2': 	tmpDaten[0] = tmpDaten[0] - 10;
									break;
					}
				}
				break;
			case '2':
				while (cmd2 != 's')
				{
					SerWrite("\n\r dMotGTol (",13); PrintInt(tmpDaten[1]);
					SerWrite(") --->: ",8);
					SerRead(&cmd2,1,0);	// Daten einlesen
					switch (cmd2)
					{
						case '8': 	tmpDaten[1]++;
									break;
						case '2': 	tmpDaten[1]--;
									break;
					}
				}
				break;
			case '3': 
				while (cmd2 != 's')
				{
					SerWrite("\n\r MotGeschStep (",16); PrintInt(tmpDaten[2]);
					SerWrite(") --->: ",8);
					SerRead(&cmd2,1,0);	// Daten einlesen
					switch (cmd2)
					{
						case '8': 	tmpDaten[2]++;
									break;
						case '2': 	tmpDaten[2]--;
									break;
					}
				}
				break;
			case '4': 
				while (cmd2 != 's')
				{
					SerWrite("\n\r StartWeg (",13); PrintInt(tmpDaten[3]);
					SerWrite(") --->: ",8);
					SerRead(&cmd2,1,0);	// Daten einlesen
					switch (cmd2)
					{
						case '8': 	tmpDaten[3]++;
									break;
						case '2': 	tmpDaten[3]--;
									break;
					}
				}
				break;
			case '5': 
				while (cmd2 != 's')
				{
					SerWrite("\n\r dWegZul (",12); PrintInt(tmpDaten[4]);
					SerWrite(") --->: ",8);
					SerRead(&cmd2,1,0);	// Daten einlesen
					switch (cmd2)
					{
						case '8': 	tmpDaten[4]++;
									break;
						case '2': 	tmpDaten[4]--;
									break;
					}
				}
				break;
			case '6': 
				while (cmd2 != 's')
				{
					SerWrite("\n\r RegelintZeit (",17); PrintInt(tmpDaten[5]);
					SerWrite(") --->: ",8);
					SerRead(&cmd2,1,0);	// Daten einlesen
					switch (cmd2)
					{
						case '8': 	tmpDaten[5] = tmpDaten[5] + 10;
									break;
						case '2': 	tmpDaten[5] = tmpDaten[5] - 10;
									break;
					}
				}
				break;
			case '7': 
				while (cmd2 != 's')
				{
					SerWrite("\n\r ZuFahrendeStrecke (",22); PrintInt(tmpDaten[6]);
					SerWrite(") --->: ",8);
					SerRead(&cmd2,1,0);	// Daten einlesen
					switch (cmd2)
					{
						case '8': 	tmpDaten[6] = tmpDaten[6] +100;
									break;
						case '2': 	tmpDaten[6] = tmpDaten[6] -100;
									break;
					}
				}
				break;
			//default: SerWrite("\n\r Eingabe unzulaessig.",24);;
		}	// End SWITCH
		
	}	// End WHILE
	
	if (cmd == 's')		// Werte speichern
	{	SerWrite("\n\r Asuro speichert die Daten...",31);
		for(i=0;i <= 6; i++)
		{
		   	PCDaten[i] = tmpDaten[i];
			StatusLED(GREEN);
			Msleep (100);
			StatusLED(OFF);
			Msleep (100);
		}
		StatusLED(GREEN);
	}
	SerWrite("\n\r",2);
	while(1);
}