werte in ein array einfügen

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
gizno82
Beiträge: 46
Registriert: Sa Dez 19, 2009 4:03 pm

werte in ein array einfügen

Beitrag von gizno82 » Sa Dez 19, 2009 4:37 pm

Hallo

Ich möchte ein Display über die serielle Schnittstelle ansteuern das protokoll zum ansteuern ist folgendermaßen aufgebaut:
Bsp.
Dieser befehl löscht erst das display und zeichneit dann eine gerade von punkt 0,0 nach punkt 479,271.
in ascii:

DC1,len,ESC,D,L,ESC,G,D,' ',0,' ',' ',0,' ',479,' ',271,bcc
len = Anzahl der Nutzdaten in Byte ohne Prüfsumme und ohne DC1.
bcc = 1 Byte = Summe aus allen Bytes inklusive DC1 und len, Modulo 256.

man muss das ganze aber als hex schreiben was dann bei mir so aussieht und auch fünktioniert:

char clearDisplayAndDrawLine[] = {0x11,0x0e,0x1b,0x44,0x4c,0x1b,0x47,0x44,0x00,0x00,0x00,0x00,0xdf,0x01,0x0f,0x01,0x60};
jetzt möchte ich aber unter der konsole eine funktion schreiben die z.b. einen pixel auf dem display setzt.
void setPixel(int x, int y);
ich könnte ja in der funktion das befehls array hart codieren wie ich es im obigen beispiel gemacht habe.
wie bekomme ich aber die werte x und y an der richtigen stelle in das array rein ?
der x bzw y wert hat eine feste stelle im array muss aber variabel sein da die werte ja an die funktion übergeben werden.
könnte mir jemand sagen wie man das hin bekommt.
ich weiß absolut nicht mehr weiter, da ich noch nicht so gut c kann.
ich bin sehr dankbar für jede art von hilfe.

gruß

gizno82

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: werte in ein array einfügen

Beitrag von Xin » Sa Dez 19, 2009 6:05 pm

Hi, sorry, aber ich glaube, ich habe das Problem noch nicht vollständig kapiert. Ich kapiere nämlich nicht, wie aus dem Array eine Linie entsteht. ^^

Wenn Du mir ein Array zeigst, wo Du mir die Positionen für die Pixelkoordinaten zeigst, dann ist das vermutlich problemlos zu realisieren.

Ansonsten: Willkommen im Forum :-)

EDIT: 2. Runde...
char clearDisplayAndDrawLine[] = {0x11,0x0e,0x1b,0x44,0x4c,0x1b,0x47,0x44, /* das sind 8 Bytes */
0x00,0x00,0x00,0x00,0xdf,0x01,0x0f,0x01,0x60};

Hier stehen ja, 0/0, gefolgt von 479 und 271.
Das sind shorts - also 16 Bit Zahlen.

Was ich jetzt hier mache, ist keine gute C-Programmierung für Einsteiger, aber effektiv...
Die erste 0 steht an 8. Stelle, wenn man in Bytes rechnet. Da Shorts doppelt so groß sind, steht es an 4. Stelle, wenn man mit Shorts rechnet.

short * hack = (short *) clearDisplayAndDrawLine;
hack[4] = x;
hack[5] = y;
Da die Linie gleiche Start und Endpunkte hat....
hack[6] = x;
hack[7] = y;

Das solltest Du nun an die serielle Schnittstelle senden können?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

gizno82
Beiträge: 46
Registriert: Sa Dez 19, 2009 4:03 pm

Re: werte in ein array einfügen

Beitrag von gizno82 » Sa Dez 19, 2009 6:49 pm

Hi xin

erst ein mal danke für deine Hilfe aber was passiert genau in deiner ersten zeile mit diesem pointer cast ? das verstehe ich noch nich so ganz.

Gruß

gizno82

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: werte in ein array einfügen

Beitrag von Xin » Sa Dez 19, 2009 8:21 pm

gizno82 hat geschrieben:erst ein mal danke für deine Hilfe aber was passiert genau in deiner ersten zeile mit diesem pointer cast ? das verstehe ich noch nich so ganz.
Gerne, dafür ist das Forum da.

Du versicherst Deinem Compiler (in Sinne von mit Waffengewalt "überreden"), dass der Zeiger nun auf einen anderen Datentyp zeigt. Und mit diesem Zeiger arbeitest Du dann.

Das entsprechende Kapitel im Wiki findest Du hier. Hier wird auch auf eine Methode per Union hingewiesen, die ein wenig sauberer wäre - aber in dem Fall nicht zu viel. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

gizno82
Beiträge: 46
Registriert: Sa Dez 19, 2009 4:03 pm

Re: werte in ein array einfügen

Beitrag von gizno82 » So Dez 20, 2009 1:53 am

achso du meinst mit "ich zwinge meinen pointer"... :D das array da man ein array aufh als zeiger betrachten kann.
richtig ?

ich freue mich darüber das man hier nicht ausgelacht wird als c neuling und sich miese kommentare durchlesen muss. endlich mal ein anständiges forum mit leuten die nicht überheblich sind und meinen sie hätten die weisheit mit löffeln gefressen !!!

DANKE

Gruß

gizno

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: werte in ein array einfügen

Beitrag von Xin » Mo Dez 21, 2009 9:21 am

gizno82 hat geschrieben:achso du meinst mit "ich zwinge meinen pointer"... :D das array da man ein array aufh als zeiger betrachten kann.
richtig ?
Richtig ^^
Ganz vergessen, das zu erwähnen.
gizno82 hat geschrieben:ich freue mich darüber das man hier nicht ausgelacht wird als c neuling und sich miese kommentare durchlesen muss. endlich mal ein anständiges forum mit leuten die nicht überheblich sind und meinen sie hätten die weisheit mit löffeln gefressen !!!
Wir haben die Weisheit mit Löffeln gefressen, aber sind halt nicht so bescheiden, das mit 'Bist Du zu blöd Google zu bedienen??' zu verstecken. ;-)

Dies ist ein Programmierforum, da sind Anfänger genauso eingeladen wie Professionelle. Dies ist kein Forum für Möchtegern-Programmiergurus.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten