Gast
#4500569
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;
}
};