Hi, ich bin gerade dabei mein GLCD in Betrieb zunehmen. Ich wollte mir ein universal GLCD Modul bauen. Dieses Modul sollte die Moeglichkeit das Display per SPI, TWI , RS232/USB anzusteueren. Ich hab die Peter Fleury USART als Vorbild genommen. Ich bin gerade dabei die SPI Anbindung vorzunehmen. Ein Ringerbuffer für die SPI Daten hab ich soweit fertig. Jetzt kommt der schwierige Part. Die Verwaltung der Commando Code's bzw Verarbeitung der Display Daten. Ich hab zum testen ein kleines unsigned Char Array generiert. Ich frage in diesen Array das erste Feld ab und ordne diesen den Befehlen zu. Dieses funktioniert auch , vielleicht nicht super professionell , aber es erfuellt erstmal den Zweck. Ich haenge jetzt ein bischen bei der Funktion Strings auf Display zugeben. Die normale Stringausgabe funktioniert über ein Pointer der auf das akutelle Element zeigt. Mein Problem liegt darin mein unsigned Char Array zusplitten. Beispiel: unsigned char SPIDATA[20]; // SPI DATA[0] == Command (0x00 = Displaydata, 0x01 == LCD_clear) usw. Wie kriege ich jetzt den Stringzeiger dazu auf das zweite Element vom Array zustarten ? Also anstatt von SPIDATA[0] von SPIDATA[1] ? Ich würde mich über eine Antwort freuen. Mfg Dirk
char *pPointer=&SPIDATA[1]; das sollte das tun...wenn ich das richtig verstanden hab was du willst... 73 de oe6jwf / hans
char *pPointer=&SPIDATA[1]; ist äquivalent zu char *pPointer = SPIDATA + 1; Stilistisch sei anzumerken, daß sich die Konvention eingebürgert hat, nur Präprozessor-Makros in Großbuchstaben zu schreiben. SPIDATA sollte also kleingeschrieben werden. Hilfreich wäre es allerdings, wenn Dirk sich seine Frage (oder was er dafür hält) nochmal durchliest und etwas überarbeitet ...
Hi, vielen Dank. Trotz mehrfachen durchlesen meiner Frage finde ich kein Fehler in der Fragestellung. Ich werde es heute abend mal testen. mfg Dirk
Lies Dir diese Sätze nochmal durch: "Ich frage in diesen Array das erste Feld ab und ordne diesen den Befehlen zu. " Was magst Du damit meinen? "Wie kriege ich jetzt den Stringzeiger dazu auf das zweite Element vom Array zustarten ? Also anstatt von SPIDATA[0] von SPIDATA[1] ?" Was willst Du damit ausdrücken? (ich will ja gar nicht auf Rechtschreibfehlern oder sowas 'rumreiten, sondern einfach nur verstehen, was Du versuchst, uns zu fragen)
Hi, hm ich hab echt starke Probleme mein Problem in Worte zufassen. >"Ich frage in diesen Array das erste Feld ab und ordne diesen den >Befehlen zu. " >Was magst Du damit meinen? void zuordnung(void) { switch(spidata[0]) { case 1: LCD_clear(); break; case 2: LCD_home(); break; case 3: // hier muesste der Zeiger auf spidata[1] erhoeht werden // damit die Zeichen ausgegeben werden. LCD_puts(s); break; //usw. } } So hatte ich mir die Zuordnung vorgestellt. Der SPI Master sendet die Befehlsfolge z.B. 0x1F(startbyte) , 0x03(Command) , 0xFF (Data) , 0xFA (Data), 0x10 (Data), 0x3F (Endbyte). Falls jemand einen anderen Loesungansatz hat bin ich nicht abgeneigt auch diesen zunutzen. Mfg Dirk
Aaaah, damit wird die Sache doch schon verständlicher. void zuordnung(void) { switch(spidata[0]) { // ... dinge weggelassen case 3: // hier muesste der Zeiger auf spidata[1] erhoeht werden // damit die Zeichen ausgegeben werden. LCD_puts(spidata + 1); break; //usw. } Das funktioniert, wenn bei spidata[1] ein nullterminierter String beginnt, also beispielsweise spidata[0] = 0x3; spidata[1] = 'A'; spidata[2] = 'h'; spidata[3] = 'a'; spidata[4] = 0; führt dazu, daß "Aha" aufs LC-Display ausgegeben wird. Allerdings versinkt das Verstehen bereits wieder im Nebel: "Der SPI Master sendet die Befehlsfolge z.B. 0x1F(startbyte) , 0x03(Command) , 0xFF (Data) , 0xFA (Data), 0x10 (Data), 0x3F (Endbyte). " Bedeutet das, daß diese Daten in der Reihenfolge in spidata[] abgelegt sind? Dann würde der "String" "\xFF\xFA\x10\x3F ..." (ohne abschließende Null!) an LCD_puts übergeben werden, was mehrere seltsame Zeichen auf dem Display zur Folge haben dürfte.
Hi, >Bedeutet das, daß diese Daten in der Reihenfolge in spidata[] >abgelegt sind? Jip. Die Daten sollten in dieser Reihenfolge im SPI Buffer stehen. >Dann würde der "String" "\xFF\xFA\x10\x3F ..." (ohne >abschließende Null!) an LCD_puts übergeben werden, was mehrere >seltsame Zeichen auf dem Display zur Folge haben dürfte. Ok. Die Daten muesste ich vorher noch in Ascii umwandeln und zum Schluss terminieren ('0' anhaengen). Ich hatte mir das wohl doch zu simpel gedacht. Mfg Dirk
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.