Forum: Mikrocontroller und Digitale Elektronik Programmiertechnische Frage C


von Thorsten S. (whitenoise)


Lesenswert?

Hi,

ich grübel schon eine ganze Weile über eine Sache:

Ich habe ein Bytearray aus 6x7 Bytes. Darin sind Tage eines Kalenders 
abgelegt:

 0  0  0  1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  0
 0  0  0  0  0  0  0

als Beispiel.

Nun möchte ich mit einem Cursor durch das Array laufen, wenn ich an den 
oberen Rand komme möchte ich einen Monat zurück gehen, wenn ich an den 
unteren Rand komme einen vorwärts, innerhalb des arrays soll man sich 
mit links und recht in einer Zeile bewegen.

Es existiert alles bis auf das Monate Blättern. Ich habe jedoch noch 
keine gute Schnittstellenidee zwischen Navigationstasten und diesem 
Kalenderblatt. Es gibt eine Funktion der wird der erste Tag im Monat und 
die Anzahl der Tage im Monat übergeben, daraus generiert diese Funktion 
das obige Zahlenspiel in einem 2 Dimensionalen Array. Eine weitere 
Funktion bringt den Inhalt des Arrays auf ein LED Display.

Ich suche nun nach einer möglichst einfachen Schnittstelle zwischen 
Array und Navigation um mich "bewegen" zu können. Ich habe mehrere 
Ansätze aber das gelbe vom EI ist es noch nicht. Bewegt wird sich mit 5 
Tasten, rechts, links, oben, unten und Enter.

Markierungen im Array werden im Moment mit der Übergabe des Tages 
gemacht, also: Mark_Day(31,Rot); als Beispiel. Diese Funktion benötigt 
keine x,y Koordinaten im Array, ich habe noch keinen guten kniff 
zwischen x,y Koordinaten und ersterTag,anzahlTage. Theoretisch lässt 
sich das eine in das andere umwandeln....Ich hoffe man versteht das.

Evtl. hat jemand von Euch ja noch eine geniale Idee. Wäre klasse.

Gruß,
Whitenoise

von Lehrmann M. (ubimbo)


Lesenswert?

Ich versteh nicht ganz - ist das Array nicht immer so beschrieben ?

Könntest du nicht die Source einfach komplett posten ...

so wie's aussieht ist

ersterTag array[0][3]

und

anzahlTage array[4][anzahlTage-26]

 0  0  0  1  2  3  4
 5  6  7  8  9 10 11
 12 13 14 15 16 17 18
 19 20 21 22 23 24 25
 26 27 28 29 30 31  0
 0  0  0  0  0  0  0

oder hab ich was flasch verstanden ?

von Thorsten S. (whitenoise)


Lesenswert?

Hier die Courcen:

Beitrag "RG LED Matrix Emulation auf dem Rechner mit Visual Studio 6.0"


Ja das ist schon richtig. über eine Funktion wird das 2D Array mit den 
tagesdaten gefüllt. Diese Funktion erhält lediglich den ersten tag im 
Monat und die Anzahl der Tage übergeben.

Nun kommt eine art Cursor-beweg-Funktion die evtl Informationen aus dem 
Array benötigt um zu wissen, ob sie an den rand kommt, und was dann 
geschehen soll, theoretisch könnte die cursor beweg funktion diese Info 
aber auch aus den beiden bekannten parametern (erster tag im Monat und 
Anzahl der tage im Monat) errechnen. Evtl. ist es aber einfach das array 
zu "fragen". mir geht es nun um die Gestaltung der Funktion die das 
array fragen soll. Momantan läuft diese funktion noch autak und rechnet 
sich das selbst hin. der cursor wird dann einfach im array gesetzt, ohne 
das eine bidirektionale kommunikation statt findet...

Gruß,
whitenoise

von Karl H. (kbuchegg)


Lesenswert?

Thorsten S. schrieb:

> Es existiert alles bis auf das Monate Blättern. Ich habe jedoch noch
> keine gute Schnittstellenidee zwischen Navigationstasten und diesem
> Kalenderblatt. Es gibt eine Funktion der wird der erste Tag im Monat und
> die Anzahl der Tage im Monat übergeben, daraus generiert diese Funktion
> das obige Zahlenspiel in einem 2 Dimensionalen Array. Eine weitere
> Funktion bringt den Inhalt des Arrays auf ein LED Display.
>
> Ich suche nun nach einer möglichst einfachen Schnittstelle zwischen
> Array und Navigation um mich "bewegen" zu können. Ich habe mehrere
> Ansätze aber das gelbe vom EI ist es noch nicht. Bewegt wird sich mit 5
> Tasten, rechts, links, oben, unten und Enter.


Zwischen dem was du hast wird es auch keine vernünftige 'Schnittstelle' 
geben. De 5 Tasten haben nun mal mit irgendwelchen LED nichts zu tun.

Ich würde mit eine Funktion schaffen, die so ein Array übergeben bekommt 
und welche sich dann um die Tasten im Zusammenspiel mit dem Array-Inhalt 
kümmert. Dir Funktion returniert ja nachdem wie das Endergebnis aussieht
einen Code für:
* bin vorne rausgefallen (also vorhergehendes Monat ausgewählt)
* bin hinten tausgefallen (also Monat danach ausgewählt)
* Tag wurde ausgewählt

Zur Navigation benutzt die Funktion ausschliesslich dem Arrayinhalt mit 
dem Sonderwissen, dass 0 kein gültiger Tag ist.

von Plan (Gast)


Lesenswert?

Wenn man unten, also nach 31, nicht 0 reich schreibt, sondern 100, dann 
könnte man sofort sehen 0 = voriger Monat, 100 = nächster Monat.

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
Noch kein Account? Hier anmelden.