mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programmiertechnische Frage C


Autor: Thorsten S. (whitenoise)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Thorsten S. (whitenoise)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Plan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.