ili9341 bitmap refresh - lösungssvorschläge?

Gast #4500569
Lesenswert?
• ▲
▼
Hallo,

auf meinem display wird ein fahrzeug als bitmap dargestellt, dass alle 
möglichen türzustände abbilden soll.
die nachrichten kommen zyklisch per canoe.

im moment habe ich das problem, dass dieses bild jedes mal refresht 
werden muss,sobald eine neue nachricht reinkommt. es wird als das 
fahrzeug gezeichnet und anschließend lege ich dunkle rechtecke über die 
türen, die irrelevant sind.
vielleicht hat hier jemand einen interessanten lösungsansatz bei dem das 
fahrzeug erhalten bleibt und nicht jedes mal neu gezeichnet werden muss.

das ist mein code:

uint8_t can_receive ()
{
  CANMessage msg;
  msg = can_get_data();

  struct tuerstatus tmp_tueren = 
{false,false,false,false,alle_tueren.bild_gemalt}; //aktueller status

  if (msg.data[0]==0x01)
    tmp_tueren.tuer_vl=true;
  if (msg.data[1]==0x01)
    tmp_tueren.tuer_vr=true;
  if (msg.data[2]==0x01)
    tmp_tueren.tuer_hl=true;
  if (msg.data[3]==0x01)
    tmp_tueren.tuer_hr=true;

  if 
((tmp_tueren.tuer_vl!=alle_tueren.tuer_vl)||(tmp_tueren.tuer_vr!=alle_tu 
eren.tuer_vr)
  ||(tmp_tueren.tuer_hl!=alle_tueren.tuer_hl)||(tmp_tueren.tuer_hr!=alle_t 
ueren.tuer_hr))
  {
    tmp_tueren.bild_gemalt=false;
  }


  if (!tmp_tueren.bild_gemalt)//!tmp_tueren.bild_gemalt
  {


    myGLCD.drawBitmap(65,90,115,180,tuer_alle_offen);
    if (!tmp_tueren.tuer_vl)
      rect_VL();
    if (!tmp_tueren.tuer_vr)
      rect_VR();
    if (!tmp_tueren.tuer_hl)
      rect_HL();
    if (!tmp_tueren.tuer_hr)
      rect_HR();

    tmp_tueren.bild_gemalt = true;
    //alle_tueren = tmp_tueren;

    alle_tueren.tuer_vl = tmp_tueren.tuer_vl;
    alle_tueren.tuer_vr = tmp_tueren.tuer_vr;
    alle_tueren.tuer_hl = tmp_tueren.tuer_hl;
    alle_tueren.tuer_hr = tmp_tueren.tuer_hr;
    alle_tueren.bild_gemalt = tmp_tueren.bild_gemalt;

  }
 };
Gast #4500687
Lesenswert?
• ▲
▼
peter schrieb:
> vielleicht hat hier jemand einen interessanten lösungsansatz bei dem das
> fahrzeug erhalten bleibt und nicht jedes mal neu gezeichnet werden muss.

Wenn du deine Display-Ansteuerung schnell genug gemacht hättest
wäre das alles kein Problem. Dann würde auch sonst das Display
mehr "Spass machen".

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.