-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: .bmp umwandeln in c headerdatei

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.10.2006
    Ort
    Detmold
    Alter
    26
    Beiträge
    106

    .bmp umwandeln in c headerdatei

    Anzeige

    nabend
    ich möchte auf meinem glcd (2xKS010 mit 64x128 pixeln bitmaps anzeigen. jetzt brauche ich ein tool, mit dem man die bitmaps in eine headerdatei konvertieren kann. ich habe auf mikrocontroller.net schon etwas passendes gefunden, aber der link ist leider kaputt. kennt jemand ein tool für diese zwecke ? danke schonmal
    mfg maddin

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    wahrscheinlich hilft dir das nicht weiter, aber ich habe mal in c etwas geschrieben, um ein S/W bitmap in ein array zu konvertieren (mit dem bitmap wird eine text-datei erzeugt, die das array enthält):
    http://www.roboternetz.de/phpBB2/zei...ighlight=nokia
    ich kenne aber deine displays nicht, je nachdem, wie dort die bilddaten abgelegt werden, wirst du einiges umstricken müssen.

    gruesse

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von squelver
    Registriert seit
    20.07.2006
    Ort
    Hoykenkamp
    Alter
    37
    Beiträge
    2.474
    * Da geht noch was *

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.10.2006
    Ort
    Detmold
    Alter
    26
    Beiträge
    106
    hmm dann muss ich mir wohl doch nen programm selbst schreiben.
    @ robocat: ja so ein tool meine ich,bloß eben auf meine grafik controller zurecht geschnitten. leider spuckt mein compiler nur fehler aus wenn ichs einfach reinkopiere
    ich hab bisher fast nur AVR c programme entworfen und praktisch null erfahrung mit dem erstellen von lauffähigen pc programmen... aber das ist ja mal ne gelegenheit sich damit etwas genauer zu beschäftigen. danke für eure antworten.

    aber wenn jemand noch ein funktionstüchtiges tool dafür kennt, erspart er mir damit vllt ein bisschen arbeit...

    mfg maddin

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    mit was hast du es kompiliert? mit avr-c geht es nicht, es muss ein "richtiger" compiler sein, der executables erzeugen kann: bloodshed, mingw, gcc, bcc32 oder sowas. hier findest du eine kurzanleitung für bcc unter windows:
    http://codefactory.dead-men.de/index.php?tutorial=2
    das tool mit dem ich editiere und den kompiler starte ist hier beschrieben:
    http://codefactory.dead-men.de/index.php?tutorial=11

    ich finde es schadet nicht, wenn man weiß, wie man programme auf dem pc erzeugt. wahrscheinlich hast du mehr davon, als wenn dir jemand das fertige executable hinklatscht.
    ich kann mir aber evtl. mal das datenblatt zu deinen displays angucken, und den code abwandeln und kompilieren. wäre dann ein win32 executable.

    gruesse von der katz

    EDIT:
    kennst du diese seite http://www.compsys1.com/workbench/Be...ic/glipic.html bzw http://www.compsys1.com/support/glipic.zip?

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.10.2006
    Ort
    Detmold
    Alter
    26
    Beiträge
    106
    mit was hast du es kompiliert? mit avr-c geht es nicht, es muss ein "richtiger" compiler sein, der executables erzeugen kann:
    ....

    für wie blöd hälst du mich ??????? ^^
    ich habs mit dev-c++ compiliert. damit hab ich bisher immer meine win32 anwendungen erstellt. ist zwar eben für c++ aber da muss ja ein C programm eigt auch drauf laufen !?!

    vielen dank für das angebot, ich werd erstemal gucken, ob ich das nicht selbst hinbekomme, ansonsten komme ich auf dich zurück.

    die KS0108 funktionieren übrigens prinzipiell genauso wie dein nokia display, von daher müsste ich theoretisch (das heißt: wenn der compiler nicht muckt) nur die 84*48 pixel in 128*64 umwandeln, das schafft sogar ein nooby wie ich ^^ aber halt nur wenn der compiler sich nich beschwert.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.10.2006
    Ort
    Detmold
    Alter
    26
    Beiträge
    106
    ich poste einfach mal was mein compiler sagt. vllt weißt du ja, warum es bei dir klappt und bei mir nich...

    file1=malloc(size);
    36 D:\Dev-Cpp\main2.cpp invalid conversion from `void*' to `unsigned char*'

    file2=malloc(504);
    40 D:\Dev-Cpp\main2.cpp invalid conversion from `void*' to `unsigned char*'

    sprintf(buf,"unsigned char picture[]={");
    63 D:\Dev-Cpp\main2.cpp initializing argument 1 of `int sprintf(char*, const char*, ...)'


    von dem typ stehen da noch 5 weitere meldungen.

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    oh, das stimmt. malloc gibt einen void pointer zurück, den du casten musst. bcc meckert da nicht, aber streng genommen muss das so sein:
    file1=(unsigned char*)malloc(size);

    2ter fehler wahrscheins:
    sprintf((char*)buf,"unsigned char picture[]={");

    oder du deklarierst file1, file2 und buf als char* (also signed), müsste auch gehen.

    gruesse

    EDIT: nein, ich halte dich net für dumm, sry -.-

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.10.2006
    Ort
    Detmold
    Alter
    26
    Beiträge
    106
    np, danke für deine hilfe, ich probiers gleich mal aus

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.10.2006
    Ort
    Detmold
    Alter
    26
    Beiträge
    106
    aaaalso
    ich kann jetzt eine .exe erstellen. die funktioniert auch, das ergebnis ist allerdings ein bisschen merkwürdig:

    Code:
    unsigned char picture[]={
    4294967211,4294967211,4294967211,4294967211,4294967211,4294967209,41,41,
    41,40,40,40,40,40,40,40,
    4294967210,4294967210,42,42,42,42,42,32,
    4294967168,0,0,0,0,0,0,0,
    87,87,87,83,83,81,81,81,
    85,85,85,85,85,85,85,85,
    85,85,85,85,85,84,84,64,
    0,0,0,0,0,0,0,0,
    4294967211,4294967211,4294967211,4294967210,4294967202,4294967200,32,32,
    43,43,42,42,42,42,42,42,
    4294967210,4294967210,4294967210,4294967210,4294967210,4294967210,4294967208,4294967200,
    32,0,0,0,0,0,0,0,
    87,87,87,87,87,83,83,83,
    83,81,81,81,81,81,81,81,
    85,85,85,85,84,84,84,64,
    0,0,0,0,0,0,0,0,
    4294967214,4294967210,4294967202,4294967200,4294967200,4294967200,4294967200,0,
    32,0,0,0,0,0,0,0,
    2,2,2,2,2,2,2,0,
    4294967208,32,32,32,0,0,0,0,
    93,93,81,81,65,64,64,0,
    0,0,0,0,0,0,0,0,
    1,0,0,0,0,0,0,0,
    80,80,0,0,0,0,0,0,
    4294967226,4294967210,4294967210,4294967208,4294967208,4294967168,0,0,
    4294967168,0,0,0,0,0,0,0,
    2,2,2,2,2,2,2,2,
    4294967200,32,32,0,0,0,0,0,
    93,85,69,65,65,65,64,0,
    64,0,0,0,0,0,0,0,
    5,5,4,4,4,4,4,0,
    81,64,64,64,0,0,0,0,
    4294967250,4294967250,4294967250,4294967186,4294967186,4294967186,4294967186,4294967184,
    4294967184,16,16,16,16,16,0,0,
    4294967170,4294967170,4294967170,4294967170,4294967170,4294967170,4294967170,4294967170,
    4294967208,4294967208,4294967208,4294967208,4294967200,4294967200,4294967200,4294967200,
    4294967277,4294967269,101,101,101,101,101,96,
    32,32,32,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    85,80,80,80,80,80,80,80,
    4294967250,4294967250,4294967250,4294967250,4294967250,4294967170,4294967168,4294967168,
    4294967168,0,0,0,0,0,0,0,
    4294967168,4294967168,4294967168,4294967168,4294967168,4294967168,4294967168,4294967168,
    4294967208,4294967200,4294967200,4294967200,4294967200,4294967200,4294967200,4294967200,
    4294967205,4294967205,4294967205,37,37,37,37,32,
    32,32,32,32,32,32,0,0,
    4,4,4,4,4,4,4,4,
    81,80,80,80,64,64,64,64,
    4294967231,4294967231,4294967211,4294967210,4294967210,4294967210,4294967210,4294967210,
    4294967210,4294967210,4294967210,4294967208,4294967208,4294967200,4294967200,4294967200,
    4294967170,4294967170,4294967170,2,2,2,2,2,
    4294967178,4294967170,2,2,2,2,2,2,
    127,127,95,85,85,85,85,85,
    85,85,84,80,80,80,64,64,
    64,0,0,0,0,0,0,0,
    85,21,21,5,5,5,5,5,
    4294967231,4294967231,4294967227,4294967210,4294967210,4294967210,4294967210,4294967210,
    4294967210,4294967210,4294967210,4294967208,4294967200,4294967200,4294967200,4294967168,
    4294967168,4294967168,0,0,0,0,0,0,
    42,42,10,10,10,10,10,10,
    127,127,87,85,85,85,85,85,
    85,84,84,80,80,64,64,64,
    5,5,5,5,5,5,5,5};
    eigt dürfen nur werte zwischen 0 und 255 auftreten, 4294967208 sprengt da ganz eindeutig den rahmen.

    wie muss ich diese zeilen umschreiben damit sie auf mein 64x128 glcd passen ?

    file2=malloc(504);
    memset(file2,0,504);

    for(x=0;x<84;x++)
    {
    for(y=0;y<48;y++)
    {
    if(!(*(file1+y*12+x/8 )>>(7-(x%8 )))&1==1)
    {
    *(file2+(5-y/8 )*84+x)|=1<<(7-(y%8 ));
    }
    }
    }

    also 84==>128 und 48==>64, denke ich mir, und der rest ???

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •