Hallo Wollte mal fragen wie ich mit C am besten *.bmp Dateien einfüge. Im Speziellen will ich einfach eine 320*200 Pixel (S/W) Datei in den Flashspeicher mit dem restlichen programmcode schreiben. Das Bild soll dann auf einem Display ausgegeben werden, welches soweit auch schon läuft, nur bekomme ich die bmp Datei einfach nicht dazu mit in den Speicher genommen zu werden. Ich verwende einen dsPIC mit dem C30 Compiler, aber das müsste ja bei allen Compilern ziemlich gleich sein. Also gebt mir bitte Tipps wie ich das realisieren könnte und wie ich dann am besten auf die Daten zugreifen kann. Vielleicht so wie auf ein Array? Hilfe!! Danke! MfG Martin W ---------------------------------- http://www.sbox.tugraz.at/home/m/martinw
am besten schreibst du dir ein kleines pc programm, dass den inhalt der bmp datei ausliest und in ein array deiner wahl reinschreibt. infos zum bmp format gibts bei google (bmp file format). vielleicht solltest du die konvertierung aber lieber von einem einfacheren format machen
Hallo Was einfacheres als bmp? Was wäre denn da noch einfacher als die Rohdaten?? ;-) Naja ein PC Programm das mir das in ein Array reinschreibt, kein Problem... Aber was fang ich dann mit dem Array an? Ich kann es ja erst nicht einbinden... ich mein ich könnte es all txt wieder speichern, ok aber wie binde ich die txt datei ein und greife auf sie zu?? Danke! MfG Martin W ---------------------------------- http://www.sbox.tugraz.at/home/m/martinw
" Was einfacheres als bmp? Was wäre denn da noch einfacher als die Rohdaten?? ;-)" Jo die Rohdaten wären einfacher als BMP und die Rohdaten könnten schon so angepasst sein das sie das spezielle Pixelformat der LCD's direkt unterstützen. BMP Files haben einen Header und sind somit keine Rohdaten, auch wenn dieser Header wirklich einfach aufgebaut ist. Gruß Hagen
Ja bitte ich mein das sind vorne ein paar Zeichen weiß jetzt nicht genau wie viele und dann sind nurmehr die Rohdaten... Viel einfacher wirds nicht gehen, aber der Header ist ja eh nicht das Problem... Danke! MfG Martin W ---------------------------------- http://www.sbox.tugraz.at/home/m/martinw
"Ich kann es ja erst nicht einbinden" warum nicht? du musst das programm nur so machen, dass es dir ein fertiges 2-dimensionales array in eine datei schreibt. die datei bindest du dann in deine sourcen ein und fertig. zur benutzung einfach das array durchlaufen. da fällt mir gerad ein, du solltest auch noch x und y ausdehnung mit in die erzeugte datei speichern
Also ich soll ein C Programm schreiben, welches aus der BMP-Datei ausliest, den Header weglöscht, und dann in ein Array die Daten einliest. Am besten dynamisch, kann ich aber nur mit C++... Und dann soll ich die Daten wieder einzeln auslesen und in eine Textdatei schreiben? Und wie binde ich die im C30 Compiler dann ein? Und wie greife ich drauf zu? Konkretes Beispiel, ich habe sowas noch nie gemacht, nur aus Datein ausgelesen, aber so ein µC hat ja kein Dateisystem ;-) Danke! MfG Martin W ---------------------------------- http://www.sbox.tugraz.at/home/m/martinw
nein, wir reden noch immer aneinander vorbei :) du machst dir eine header datei mit einem grossen array drin (ein wirkliches array, wie es so in c halt aussieht). in dieses array schreibst du die einzelnen bilddaten. diesen header bindest du dann in dein uC programm ein und kannst das array ganz normal über seinen namen ansprechen. z.b unsinged int[320][200] = { {p_11, p_12, p_13... {p_21, p_22.... wobei p_xx der bildpunkt an der stelle xx ist
Ahh langsam schnall ichs! Also das Programm soll mir so ein Array in die Textdatei schreiben welches dann so wie dein Beispiel aussieht. Diesen Text kopiere ich dann in eine Headerdatei und diese binde ich mit #include im Hauptprogramm ein. Und dann kann ich einfach drauf zugreifen. Brauch ich wahrscheinlich noch ein extern oder sowas... Und das ganze liegt dann auch sicher im Flashspeicher und in effizienter Form. Also in meinem Fall unsigned char da ich immer ein Byte an das Display senden will... Ich glaub jetzt hab ichs kapiert! Danke! MfG Martin W ---------------------------------- http://www.sbox.tugraz.at/home/m/martinw
Für den BASIC-Compiler FastAVR gibt es ein kostenloses Tool namens FastLCD, das BMP-Dateien in einen hexdump konvertiert. '/////////////////////////////////////////////////////////////////////// //////// bla = 128, 8, ' Image Table Name, Xbytes, N of Lines, 1026 bytes &h00,&h00,&h00,&h00,&h00, (....) Den kann man sicherlich leicht in eine von einem C-Compiler verdaubare Form bekommen.
speicher das teil mit paint als 1 bit grafik ab. dann guckst du dir mit nem hexeditor (oder ultra edit) das ding an und kopierst dann die zeilen in dein array... mußt halt das ganze mit irgendwas bearbeiten um z.B die blanks mit ", 0x" zu ersetzten. die einzelnen zeilen kann man denke ich mal einfach auszählen und so kannst du dann das array dann füllen. so kannst auch sehen das der header bis zu adresse 3d geht (oder 61 bytes lang ist)
Hallo Also so weit funktioniert das! Hab nur noch ein kleines Problem mit dem Programm, welches mir das Array erstellt. Und zwar, dass es manchmal Zeichen auslässt. Wahrscheinlich weil es Backspace ausgibt, und dann ein Zeichen wieder gelöscht wird... Hier mal der Code beim Einlesen: Bild[Spalte][Zeile] = unsigned char(Zeichen[0]); Und beim Ausgeben: ofs<<setfill('0')<<setw(2)<<hex<<uppercase<<unsigned int(Bild[Spalte][Zeile] & 0xFF); Das ganze ist natürlich ein einer Schleife etc. drinnen aber der Fehler muss irgendwo da liegen! Vielleit weiß ja jemand wo da der Feher passiert und wie man ihn umgehen kann! MfG Martin W ---------------------------------- http://www.sbox.tugraz.at/home/m/martinw
"Wahrscheinlich weil es Backspace ausgibt, und dann ein Zeichen wieder gelöscht wird..." escapen oder als binärdatei schreiben
Ok habs jetzt geschafft mit dem kleinen selbstgeschriebenem Programm.. Danke an alle! Beweisfoto mit meiner Freundin drauf wurde angehängt ;-) MfG Martin W ---------------------------------- http://www.sbox.tugraz.at/home/m/martinw
Menno, keiner hat ihm gesagt, daß man eins der vielen bin2hex-Tools nehmen kann. Ich konvertiere damit gern *pbm-Dateien. Der Header ist mehr als super einfach (X-Y-Auflösung, Farbtiefe und das wars fast schon, siehe google) aufgebaut. paintShop kann in diesem Format s/w speichern. Tool gibz z.B. hier: http://www.ulrichradig.de/ Frank :-)
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.