void DemoCpuTemperature(void) { uint16 i,y; LCD_ClearScreen(); LCD_SetPenColor(1); LCD_SetFont(1); LCD_PrintXY(40,0,"CPU:"); LCD_PrintXY(80,0,TempString); LCD_SetFont(0); LCD_PrintXY(0,0, "60-"); LCD_PrintXY(0,18,"50-"); LCD_PrintXY(0,37,"40-"); LCD_PrintXY(0,56,"30-"); LCD_DrawLine(15,0,15,63); for(i=16;i<128;i++) { y = DemoMem[127-i]; if(y > 290) { y = ((y - 290) / 5); y = 64 - y; LCD_PutPixel(i,y,1); LCD_PutPixel(i,y+1,1); } } }
void lcdscreentimer::paintEvent() { if( m_editMode ) { } else { if( m_selectedTime>=0 ) { int x = 0, y = 10*m_selectedTime, dx = 127, dy = 10; LCD_SetPenColor(1); LCD_DrawLine(x,y,x+dx,y); LCD_DrawLine(x+dx,y,x+dx,y+dy); LCD_DrawLine(x+dx,y+dy,x,y+dy); //LCD_DrawLine(x,y+dy,x,y); // does not really work ? LCD_DrawLine(x,y,x,y+dy); } LCD_SetFont(0); LCD_PrintXY(3, 2,timerText1); LCD_PrintXY(3,12,timerText2); LCD_PrintXY(3,22,timerText3); LCD_PrintXY(3,32,timerText4); LCD_PrintXY(3,42,timerText5); } }
void CpuTemperatureView(void) { uint16_t i,y; MEASUREMENT_VIEW_struct * viewMem = cpu_temp_getViewMem(); LCD_ClearScreen(); LCD_SetPenColor(1); LCD_SetFont(1); LCD_PrintXY(40,0,"CPU:"); LCD_PrintXY(80,0,viewMem->cur_value); LCD_SetFont(0); LCD_PrintXY(0,0, "60-"); LCD_PrintXY(0,18,"50-"); LCD_PrintXY(0,37,"40-"); LCD_PrintXY(0,56,"30-"); LCD_DrawLine(15,0,15,63); for(i=16;i<128;i++) { y = viewMem->Mem[127-i]; if(y > 290) { y = ((y - 290) / 5); y = 64 - y; LCD_PutPixel(i,y,1); LCD_PutPixel(i,y+1,1); } } }
void StatusView2(void) { char a[20]; MEASUREMENT_VIEW_struct * AbgasMem = pt100_getViewMem(); LCD_ClearScreen(); LCD_SetFont(0); LCD_SetPenColor(1); LCD_PrintXY(0,0,"PufferKontrollSystem"); LCD_DrawLine(0,21,127,21); LCD_DrawLine(0,42,127,42); LCD_DrawLine(63,21,63,63); LCD_PrintXY(2,23,"Abgas"); LCD_PrintXY(2,32, AbgasMem->cur_value); LCD_PrintXY(66,23,"Verlust"); double abgasverlust = get_abgasverlust(); sprintf(a, "%4u",abgasverlust); LCD_PrintXY(66,32, a); }
void AbgasTemperatureView(void) { uint16_t i,y; MEASUREMENT_VIEW_struct * viewMem = pt100_getViewMem(); LCD_ClearScreen(); LCD_SetPenColor(1); LCD_SetFont(0); LCD_PrintXY(30,0,"ABGAS:"); LCD_PrintXY(80,0,viewMem->cur_value); LCD_SetFont(0); int max = roundUp(viewMem->max); int min = roundDown(viewMem->min); int diff = max-min; int span; if(!diff) { span = 10; if(min) min -= 10; }else { span = diff/3; } if(span < 10) span = 10; char dummy[10]; sprintf(dummy,"%4u-",min+(span*3)); LCD_PrintXY(0,0, dummy); sprintf(dummy,"%4u-",min+(span*2)); LCD_PrintXY(0,18,dummy); sprintf(dummy,"%4u-",min+(span*1)); LCD_PrintXY(0,37,dummy); sprintf(dummy,"%4u-",min); LCD_PrintXY(0,56,dummy); LCD_DrawLine(27,0,27,63); diff = (span*3); for(i=27;i<128;i++) { y = viewMem->Mem[127-i]; y = 64 - ((double)(y-min)*(double)(64.0/diff)); LCD_PutPixel(i,y,1); LCD_PutPixel(i,y+1,1); } }
void StatusView1(void) { char a[20]; /* (2000x4187x80-MW)/(3600x1000) = …KWh (Was noch in den Puffer geht); Erklärung hierzu: 2000 = Puffervolumen; 4187 = Ws/(kg*K); spezifische Wärmekapazität wasser in Wattsekunde/(kg*Kelvin) 80 = Maximaltemperatur des Puffers; MW = Mittelwertberechnung der 8 Temperaturen; Heizwert von 1 kg Holz = 3,5 KWh/kg ((2000x4187x80-MW)/(3600x1000))/3,5 = … kg (das ergibt die Holzmenge, die man nachlegen kann) – wird angezeigt am Display; */ MEASUREMENT_VIEW_struct * CPUTempMem = cpu_temp_getViewMem(); MEASUREMENT_VIEW_struct * O2Mem = lambda_getViewMem(); MEASUREMENT_VIEW_struct * BrennerMem = k_sonde_getViewMem(); MEASUREMENT_VIEW_struct * PufferMem = ds12b20_getViewMem(); double KWh = (PUFFERVOLUMEN * SPEZ_WAERMEKAP_WASSER * MAX_PUFFER_TEMP - ds18b20_getAverage()) / (3600 * 1000); double kg = KWh / HEIZWERT_HOLZ; LCD_ClearScreen(); LCD_SetFont(0); LCD_SetPenColor(1); LCD_PrintXY(0,0,"PufferKontrollSystem"); LCD_DrawLine(0,21,127,21); LCD_DrawLine(0,42,127,42); LCD_DrawLine(63,21,63,63); LCD_PrintXY(2,23,"Brenner"); LCD_PrintXY(2,32, BrennerMem->cur_value); LCD_PrintXY(66,23,"Puffer"); LCD_PrintXY(66,32, PufferMem->cur_value); LCD_PrintXY(2,44,"O2"); LCD_PrintXY(2,53,O2Mem->cur_value); LCD_PrintXY(66,44,"nachlegen"); LCD_PrintfXY(66,53,"%3.1f kg", kg); }
void DemoVector(void) { LCD_ClearScreen(); LCD_SetFillColor(1); LCD_DrawRect(110,20,120,60,1); LCD_DrawLine(0,0,127,0); LCD_DrawLine(0,0,127,16); LCD_DrawLine(0,0,127,32); LCD_DrawLine(0,0,127,48); LCD_DrawLine(0,0,127,63); LCD_SetPenColor(1); LCD_DrawCircle(63,31,31); LCD_DrawCircle(8,50,5); LCD_DrawEllipse(80,40, 30,10); LCD_SetFillColor(0); LCD_DrawRect(12,20,40,40,3); LCD_SetFillColor(-1); LCD_DrawRect(30,50,60,60,1); }
void InitialView(char *str, uint8_t pos) { uint8_t i; char a[] ={0x7F, 0}; LCD_ClearScreen(); LCD_SetFont(1); LCD_SetPenColor(1); LCD_PrintXY(0,0,"Initialisierung..."); LCD_PrintXY(0, 20, str); for(i=0; i<pos; i++) LCD_PrintXY(0+10*i, 40, a); LCD_WriteFramebuffer(); }
void ConfigView(void) { char a[20]; LCD_ClearScreen(); LCD_SetFont(0); LCD_SetPenColor(1); LCD_PrintXY(0,0,"Konfiguration"); LCD_DrawLine(0,21,127,21); LCD_DrawLine(0,42,127,42); LCD_DrawLine(63,21,63,63); LCD_PrintXY(2,23,"Puffer :"); LCD_PrintfXY(64,23, "%dl", app_config_get_puffer_volume()); LCD_PrintXY(2,33,"Licht :"); LCD_PrintfXY(64,33, "%ds", app_config_get_light_on_time()); //LCD_SetFont(0); }
void O2View(void) { uint16_t i,y; if(lambda_fehler()) { O2_ErrorView(); return; } else if(!lambda_run()) { O2_StatusView(); return; } MEASUREMENT_VIEW_struct * viewMem = lambda_getViewMem(); LCD_ClearScreen(); LCD_SetPenColor(1); LCD_SetFont(0); LCD_PrintXY(40,0,"O2:"); LCD_PrintXY(80,0,viewMem->cur_value); LCD_SetFont(0); LCD_PrintXY(0,0, "25-"); LCD_PrintXY(0,18,"15-"); LCD_PrintXY(0,37," 5-"); LCD_PrintXY(0,56," 0-"); LCD_DrawLine(15,0,15,63); for(i=16;i<128;i++) { y = viewMem->Mem[127-i]; if(y < 25) { y = 64 - ((double)(y)*(double)(64.0/25)); LCD_PutPixel(i,y,1); LCD_PutPixel(i,y+1,1); } } }
void DemoBubbles(void) { LCD_ClearScreen(); LCD_SetPenColor(1); if(DemoMem[200]) { if(DemoMem[201] > 16) DemoMem[201]--; else DemoMem[200] = 0; } else { if(DemoMem[201] <48) DemoMem[201]++; else DemoMem[200] = 1; } DemoMem[202] = ((63 - DemoMem[201]) < DemoMem[201]) ? (63 - DemoMem[201]) : DemoMem[201]; DemoMem[202] = (DemoMem[202] > 20) ? 20 : DemoMem[202]; LCD_DrawEllipse(28,DemoMem[201],20+20-DemoMem[202],DemoMem[202]); if(DemoMem[203]) { if(DemoMem[204] > 14) DemoMem[204]--; else DemoMem[203] = 0; } else { if(DemoMem[204] <50) DemoMem[204]++; else DemoMem[203] = 1; } DemoMem[205] = ((63 - DemoMem[204]) < DemoMem[204]) ? (63 - DemoMem[204]) : DemoMem[204]; DemoMem[205] = (DemoMem[205] > 20) ? 20 : DemoMem[205]; LCD_DrawEllipse(65,DemoMem[204],22+10-DemoMem[205],DemoMem[205]); if(DemoMem[206]) { if(DemoMem[207] > 10) DemoMem[207]--; else DemoMem[206] = 0; } else { if(DemoMem[207] <54) DemoMem[207]++; else DemoMem[206] = 1; } DemoMem[208] = ((63 - DemoMem[207]) < DemoMem[207]) ? (63 - DemoMem[207]) : DemoMem[207]; DemoMem[208] = (DemoMem[208] > 15) ? 15 : DemoMem[208]; LCD_DrawEllipse(102,DemoMem[207],15+20-DemoMem[208],DemoMem[208]); }
void DS18B20View(void) { char a[20]; int i, count; DS18B20_struct *ds18b20_dev; LCD_ClearScreen(); LCD_SetFont(0); LCD_SetPenColor(1); LCD_PrintXY(0,0,"DS18B20"); LCD_DrawLine(0,21,127,21); count = ds18b20_getDeviceCount() ; for(i=0; i<count;i++) { ds18b20_dev = ds18b20_getDevice(i); if(ds18b20_dev->crc) LCD_PrintfXY(0,23+(8*i), "%s: %5.1f",ds18b20_dev->_deviceid, ds18b20_dev->tempGrad); else LCD_PrintfXY(0,23+(8*i), "%s: Fehler",ds18b20_dev->_deviceid); } }
void O2_ErrorView(void) { uint16_t i,y; LCD_ClearScreen(); LCD_SetPenColor(1); LCD_SetFont(0); LCD_PrintXY( 0,0, "Lambda Fehler!"); LCD_SetFont(0); LCD_PrintXY(0, 0, "W | S | U | U | S | C"); LCD_PrintXY(0, 9, "D | P | H | L | O | J"); LCD_DrawLine(0,18,127,18); LCD_PrintXY(0,19, " | | | | | "); if(lambda_get_single_error(WATCHDOG)) LCD_PrintXY(0,19, "X"); if(lambda_get_single_error(SPI_ERROR)) LCD_PrintXY(24,19, "X"); if(lambda_get_single_error(UBAT_HIGH)) LCD_PrintXY(48,19, "X"); if(lambda_get_single_error(UBAT_LOW)) LCD_PrintXY(72,19, "X"); if(lambda_get_single_error(SONDE_OVERHEAT)) LCD_PrintXY(96,19, "X"); if(lambda_get_single_error(CJ_ERROR)) LCD_PrintXY(120,19, "X"); LCD_PrintXY(0,35, "DIAHG|IA/IP|UN|VM"); LCD_PrintXY(0,44, "DIAHD|IA/IP|UN|VM"); LCD_DrawLine(0,53,127,53); LCD_PrintXY(0,54, " | | | "); if(lambda_get_single_cjerror(DIAHG_DIAHD_ERROR)) LCD_PrintXY(12,54, "X"); if(lambda_get_single_cjerror(IA_IP_ERROR)) LCD_PrintXY(54,54, "X"); if(lambda_get_single_cjerror(UN_ERROR)) LCD_PrintXY(78,54, "X"); if(lambda_get_single_cjerror(VM_ERROR)) LCD_PrintXY(96,54, "X"); }
static uint8_t guiMainForm_ProcessEvents(struct guiGenericWidget_t *widget, guiEvent_t event) { // Process GUI messages - focus, draw, etc switch(event.type) { case GUI_EVENT_INIT: guiCore_InitTimer(TMR_TIME_UPDATE, 1, 0, (guiGenericWidget_t *)&guiMainForm); guiCore_StartTimer(TMR_TIME_UPDATE, 1); guiCore_AcceptFocusedState(&guiMainForm, 1); break; case GUI_EVENT_TIMER: sprintf(textLabel_time.text, "%2d:%02d:%02d", timeHours, timeMinutes, timeSeconds); textLabel_time.redrawForced = 1; textLabel_time.redrawRequired = 1; break; case GUI_EVENT_DRAW: // Check if full redraw is required guiGraph_DrawPanel(&guiMainForm); // Draw static elemens if (guiMainForm.redrawForced) { LCD_SetLineStyle(LINE_STYLE_SOLID); LCD_SetPenColor(colorPalette[COLOR_INDEX_3DFRAME_DARK1]); LCD_DrawHorLine(3,guiMainForm.height - 25,guiMainForm.width - 6); } // Reset flags guiMainForm.redrawFocus = 0; guiMainForm.redrawRequired = 0; break; case GUI_EVENT_FOCUS: guiCore_AcceptFocusedState(&guiMainForm, 1); guiCore_SetFocusOnNextWidget((guiGenericContainer_t *)&guiMainForm, 1, INVOKE_QUEUED); break; case GUI_EVENT_UNFOCUS: guiCore_AcceptFocusedState(&guiMainForm, 0); guiMainForm.keepTouch = 0; break; /* case GUI_EVENT_ENCODER: if ((int16_t)event.lparam < 0) guiCore_SetFocusOnNextWidget((guiGenericContainer_t *)&guiMainForm,-1); else if ((int16_t)event.lparam > 0) guiCore_SetFocusOnNextWidget((guiGenericContainer_t *)&guiMainForm,1); break; */ case GUI_EVENT_KEY: if (event.spec == GUI_KEY_EVENT_DOWN) { if (event.payload.params.lparam == GUI_KEY_LEFT) { guiCore_SetFocusOnNextWidget((guiGenericContainer_t *)&guiMainForm, -1, INVOKE_QUEUED); } else if (event.payload.params.lparam == GUI_KEY_RIGHT) { guiCore_SetFocusOnNextWidget((guiGenericContainer_t *)&guiMainForm, 1, INVOKE_QUEUED); } else if (event.payload.params.lparam == GUI_KEY_ESC) { // Keep focus on first button guiCore_SetFocusOn((guiGenericWidget_t *)&guiMainForm, INVOKE_QUEUED); } } break; case GUI_EVENT_TOUCH: // Call base container handler guiPanel_ProcessEvent((guiGenericWidget_t *)&guiMainForm, event); break; } return GUI_EVENT_ACCEPTED; }