Hallo, ich bin gerade dabei einen kleinen Algorithmus für eine Modellwahl zu schreiben. Leider komm ich im Moment nicht wirklich weiter. Vielleicht hat hier jemand nen guten Tip für mich. Es geht darum Modelle nacheinander an einer Station anzumelden. Nehmen wir mal an es sind drei Modelle mit ihren Kennungen 10, 20, 30. Diese drei Modelle versuchen sich gleichzeitig anzumelden. Jedoch kann immer nur ein Modelle angemeldet sein und Daten austauschen. Beim allerersten Anmelden ist es rein Zufällig, welches Modell eine Verbindung aufbaut. Das ist ok. Nehmen wir an es ist Modell 3. Die Kennung 30 wird gespeichert, Daten ausgetauscht und die Verbindung beendet. Beim nächsten anmelden soll das Modell 3 aber erst einmal hinten angestellt werden, so das die anderen beiden sich Anmelden und Kennungen hinterlassen können. Wenn alle drei Modell ihre Kenung hinterlassen haben, soll das Anmelden bzw. die Verbindung im Wechsel geschehen. Hätte da jetzt erst mal so angefangen: unsigned char Kennung; //Kennung der Modelle unsigned char Modell[5]; //Array für 6 Modelle unsigned char i = 0; unsigned char d; if((Modell[i] == 0) &&(!(Kennung == (Modell[i-1]))) { Modell[i] = Kennung; i++; } Haut leider nur für die ersten beiden Fahrzeuge hin, ab dem dritten könnte sich das erste auch wieder abmelden. Wäre super wenn mir einer nen guten Tip geben könnte.
unsigned char Modell[5]; //Array für 6 Modelle muss sein: unsigned char Modell[6]; //für 6 modelle
> muss sein: unsigned char Modell[6]; //für 6 modelle
Modell[0] ist das erste. Also reicht Modell[5] für 6 Modelle....
Ok, dann wohl Modell[6]; Danke! und irgendeine Idee für den Algorithmus?
Das nennt sich Round-Robin. Du hast nen Zähler, der auf ne Liste aller Modelle zeigt. Ist nichts zu tun, bleibt er stehen. Ist ein Modell anzumelden, dann zählt er hoch und prüft, ob es dasjenige Modell ist. Er zählt solange, bis er es in der Liste findet. Bis sich das gleiche Modell wieder anmelden kann, muß er also komplett rumgezählt haben, d.h. alle anderen Modelle kriegen erstmal ne Chance. Peter
Frank wrote: > Hört sich gut an. Gibt es da irgendwo Beispiele zu...?? Auf keinen Fall! PS: http://www.google.de/search?q=round-robin+algorithm
Gut hab ich gefunden;-) Aber fang ich jetzt erst mal klein an. Ich denke der erste Schritt ist eine Liste oder ein Array, wo die verschiedenen Kennungen abspeichert werden. Natürlich dürfen Kennungen dort nicht doppelt vorkommen. Das wäre mein erster Ansatz: unsigned char Kennung; //Kennung der Modelle unsigned char Modell[6]; //Array für 6 Modelle unsigned char i; if(!(Kennung == 0)) { i = 0; while(!(Modell[i] == 0)) && (!(Kennung == Modell[i]))) { i++; } Modell[i] = Kennung; } Müsste doch so klappen. Oder?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.